python之路---函数2

函数的参数.

可分为:形参和实参

       形参:在函数定义时,括号内定义的参数  --->变量名

       实参:在函数调用时,传入括号内的值     --->变量值

  注:形参与实参的绑定关系仅仅存在于函数调用的时候,调用结束,绑定关系失效

1.位置参数:按照位置从左到右定义的参数

   a.位置形参:在函数定义时,按照位置定义的形参

def func(x,y,z):
    pass

   注在函数调用时,必须为其传值,且个数相等

   b.位置实参:在函数调用时,按照.................的实参

func(1,2,3)

   注:位置实参与位置形参一 一对应2.

2.关键字参数:在函数调用时,按照key---value形式定义的实参

func(1,y=3,z=2)

注:位置实参和关键字实参可以混合使用,但是:

     1.必须遵循形参的规则

     2.不能为同一形参重复传值

func(1,x=1,y=3,z=2) #错误

     3.关键字参数必须在位置实参之后(否则会造成语法错误)

func(y=3,1,2)   #错误

3.默认参数:在函数定义时,为括号内的形参赋值

 def func(name, age, sex='men'):
    print('name:%s age:%d sex:%s' % (name, age, sex))
    func('bob', 21)
    func('tom', 30, 'women')

    注:1.在函数调用时可以不给默认参数赋值(使用默认值)

            2.对于经常变化的值   --->用位置形参

            3.对于基本不变的值   --->用默认形参

            4.默认形参应该在位置形参之后(否则语法错误)

            5.默认参数在函数定义阶段值就固定

m =1
def f(x,y=m):
   print(x,y)
m = 100
f(10)
执行结果---->10,1

            6.对于默认形参应该用不可变的数据类型

     

def func(name,job,l=[]):
    l.append(job)
    print(name,l)
func('bob','老师')
func('tom',‘工程师')
执行结果---->bob ['老师']
            tom ['老师', '工程师']  #可能会造成意外的错误
改进:
def func(name,job,l=None):   
    if l is None:                #每次都用一个新列表
    l=[]
    l.append(job)
    print(name,l)
func('bob','老师')
func('tom','工程师')
执行结果---->bob ['老师']
            tom ['工程师']

               

猜你喜欢

转载自blog.csdn.net/ltfdsy/article/details/81175284
今日推荐