@符号在Python中做什么?
当前回答
@符号还用于访问plydata/pandas数据帧查询pandas.dataframe.query中的变量。例子:
df = pandas.DataFrame({'foo': [1,2,15,17]})
y = 10
df >> query('foo > @y') # plydata
df.query('foo > @y') # pandas
其他回答
@符号还用于访问plydata/pandas数据帧查询pandas.dataframe.query中的变量。例子:
df = pandas.DataFrame({'foo': [1,2,15,17]})
y = 10
df >> query('foo > @y') # plydata
df.query('foo > @y') # pandas
它表示您正在使用装饰器。这是布鲁斯·埃克尔2008年的例子。
@可以是数学运算符或DECORATOR,但您的意思是DECORATOR。
此代码:
def func(f):
return f
func(lambda :"HelloWorld")()
使用decorator可以写成:
def func(f):
return f
@func
def name():
return "Hello World"
name()
装饰器可以有参数。
你可以看到这个GeeksforGeeks帖子:https://www.geeksforgeeks.org/decorators-in-python/
“at”(@)符号在Python中做什么?
@符号是python提供的利用装饰器的语法糖,套用一个问题,这正是关于decorator在Python中做什么的?
简单地说,decorator允许您修改给定函数的定义,而不触及其最内部(它是闭包)。当你从第三方进口精彩的包装时,这是最常见的情况。你可以想象它,你可以使用它,但你不能触摸它的内心和内心。
这里是一个快速示例,假设我在Ipython上定义了read_a_book函数
In [9]: def read_a_book():
...: return "I am reading the book: "
...:
In [10]: read_a_book()
Out[10]: 'I am reading the book: '
你看,我忘了给它加个名字。如何解决这样的问题?当然,我可以将函数重新定义为:
def read_a_book():
return "I am reading the book: 'Python Cookbook'"
然而,如果不允许我操作原始函数,或者如果有数千个这样的函数需要处理,该怎么办。
通过不同的思维来解决问题,并定义一个新的函数
def add_a_book(func):
def wrapper():
return func() + "Python Cookbook"
return wrapper
然后使用它。
In [14]: read_a_book = add_a_book(read_a_book)
In [15]: read_a_book()
Out[15]: 'I am reading the book: Python Cookbook'
塔达,你看,我修改了read_a_book,但没有触及它的内部封口。没有什么能阻止我配备装修工。
关于什么@
@add_a_book
def read_a_book():
return "I am reading the book: "
In [17]: read_a_book()
Out[17]: 'I am reading the book: Python Cookbook'
@add_a_book是一种新奇而方便的方式来表示read_a_book=add_a_bok(read_a_bok),这是一种语法糖,没有什么比它更令人着迷的了。
从Python 3.5开始,“@”用作矩阵乘法的专用中缀符号(PEP 0465——请参见https://www.python.org/dev/peps/pep-0465/)
推荐文章
- 证书验证失败:无法获得本地颁发者证书
- 当使用pip3安装包时,“Python中的ssl模块不可用”
- 无法切换Python与pyenv
- Python if not == vs if !=
- 如何从scikit-learn决策树中提取决策规则?
- 为什么在Mac OS X v10.9 (Mavericks)的终端中apt-get功能不起作用?
- 将旋转的xtick标签与各自的xtick对齐
- 为什么元组可以包含可变项?
- 如何合并字典的字典?
- 如何创建类属性?
- 不区分大小写的“in”
- 在Python中获取迭代器中的元素个数
- 解析日期字符串并更改格式
- 使用try和。Python中的if
- 如何在Python中获得所有直接子目录