Python函数二
1.函数定义
函数定义中存在带有默认值的参数,默认参数最好使用None值,并在后面加上检查代码
def foo(x,items=None)
if items is None
items.append(x)
return items
2.参数传递和返回值
调用函数时,函数参数仅仅是引用传入对象的名称。如果传递不可变的值,参数看起来实际是按值传递,但如果传递可变对象(如列表或字典)给函数,然后再修改此可变对象,这些改动将反应再原始对象中
a = [1,2,3,4,5]
def square(utems):
for i,x in enumerate(items):
items[i] = x * x #原地修改item的值
square(a)
一般来是,最好避免使用这种编程风格,在设计线程和并发性的程序中,使用这种效率很低,一i那位通常需要使用锁定来防止副作用的影响。
3.作用域规则
每次执行一个函数时,就会创建新的局部命名空间。该命名空间代表一个局部环境,其中包括函数参数的名称,在函数体内赋值的变量名称。解析这些名称时,解释器会将首先搜索局部命名空间,如果没有找到匹配的名称,它就会搜索全局命名空间。函数的全局命名空间始终是定义该函数的模块。如果解释器在全局命名空间中也找不到匹配值,最终会检查内置命名空间,如果任然找不到,就会引发NameError异常。
类
派生类定义init()是不会自定调用基类的init()方法。
浙公网安备 33010602011771号