############## # 函数的参数 # ############## # (1)必需的参数:必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。 def f(name,age): print(‘I am %s,I am %d‘%(name,age)) f(‘alex‘,18) f(‘alvin‘,16) # (2)关键字参数:关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。 def f(name,age): print(‘I am %s,I am %d‘%(name,age)) # f(16,‘alvin‘) #报错 f(age=16,name=‘alvin‘) # (3)缺省参数(默认参数):调用函数时,缺省参数的值如果没有传入,则被认为是默认值。 def print_info(name,age,sex=‘male‘): print(‘Name:%s‘%name) print(‘age:%s‘%age) print(‘Sex:%s‘%sex) return print_info(‘alex‘,18) print_info(‘铁锤‘,40,‘female‘) # (4)不定长参数:你可能需要一个函数能处理比当初声明时更多的参数。 def add(*tuples): sum=0 for v in tuples: sum+=v return sum print(add(1,4,6,9)) print(add(1,4,6,9,5)) # 加了星号(*)的变量名会存放所有未命名的变量参数。而加(**)的变量名会存放命名的变量参数 def print_info(name,*args,**kwargs):#def print_info(name,**kwargs,*args):报错 print(‘Name:%s‘%name) print(‘args:‘,args) print(‘kwargs:‘,kwargs) return print_info(‘alex‘,18,hobby=‘girl‘,nationality=‘Chinese‘,ability=‘Python‘) ################# # 函数的作用域: # ################# # L:local,局部作用域,即函数中定义的变量; # E:enclosing,嵌套的父级函数的局部作用域,即包含此函数的上级函数的局部作用域,但不是全局的; # G:globa,全局变量,就是模块级别定义的变量; # B:built-in,系统固定模块里面的变量,比如int, bytearray等。
原文:https://www.cnblogs.com/larken/p/10486708.html