Python常见问题答疑(二)

Q:Python 中的三元表达式?

A:Python中没有“:?”运算符,而是使用下面的语法进行判断选择:

[on true] if [expression]else [on false]

如果 [expression] 为真, 则 [on true] 部分被执行,如果表示为假则 [on false] 部分被执行。

 

python官方文档原文:https://docs.python.org/3/reference/expressions.html#conditional-expressions

 

Q:参数列表的 *args 和 **kwargs是什么意思?

A:参数前带 * 的,称为可变位置参数,其名字不一定是args,是自己定义的。一个星号代表一个参数列表,多余的传入参数会被放进这个列表里传给函数。同理,参数前带 ** 的,称为可变关键字参数,通常用**kwargs表示。两个星号代表一个参数字典,传入的参数会以键值对的形式放进到字典里。在函数中就相当于有一个列表/字典类型的参数,通过操作列表/字典来获取或操作包含在里面的参数。*args 和 **kwargs都是Python函数的一种用于收集参数的机制。

 

python官方文档原文:https://docs.python.org/3/reference/compound_stmts.html#function-definitions

 

Q:修饰器(“@”开头的语法,也称修饰符/装饰器)是什么?有什么用?

A:装饰器是一个很著名的设计模式,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用,为已经存在的对象添加额外的功能。Python的修饰器用于函数定义之前,将函数修饰为一个对象的功能,另一个函数使用这个修饰器就可以实现嵌套调用的效果。总言之,修饰器是一个函数, 它需要返回一个新的函数,这个函数通常在被修饰函数执行前后进行一些额外的操作,而这个新的函数一般不会修改被修饰函数的返回结果。

 

python官方文档原文:https://docs.python.org/3/library/dataclasses.html?highlight=decorator

 

Q:解释“//”和“**”运算符

A:“//”运算符是地板除法运算符,返回结果的整数部分,即向下取整;“**”是取幂运算符,a**b代表a的b次方。

 

python官方文档原文:https://docs.python.org/3/reference/expressions.html#binary-arithmetic-operations

 

 

Q:__new__和__init__的区别​​​​​​​

A:__init__为初始化方法,而__new__方法才是是真正的构造函数;__new__至少要有一个参数cls,代表要实例化的类,__init__有一个参数self,代表__new__返回的实例;先运行__new__ 然后才运行__init__。

 

python官方文档原文:https://docs.python.org/3/reference/datamodel.html#object.__new__

 

 

 

 

 

 

你可能感兴趣的:(Python)