函数,可变参数及全局变量和局部变量

默认参数,缺省参数,放在参数的最后的最后面

def info(name,age,gender,city='hz'):
    '''
    :param name:
    :param age:
    :param gender:
    :param city:默认参数
    :return:
    '''
    print('name:',name)
    print('age:',age)
    print('gender:',gender)

默认参数不可以使用可变参数,会保留上一次的结果,在后面一直追加结果

def f(x,l=[]):
    for i in range(x):
        l.append(i*i)
    print(l)

f(3)
f(3,[3,2,1])
f(3)
f(4)

help(print)
print(print.doc)魔法方法

将所有位置参数的打包成元组

def person_info(*args):
    '''

    :param args: 
    :return:
    '''
    print(args)
    for i in args:
        print(i)

person_info(12,13,'zhang')
person_info(1)
person_info(1,2,4,5,6,7,8,9,12,15)

将所有的关键字参数打包成字典

def person_info(**kwargs):
    '''

    :param kwargs: 
    :return:
    '''
    print(kwargs)
person_info(name='xiaowang',age=18)
person_info(age=18)

函数参数的混合运用以及*的作用

def sum_num(a,*args,c=7,**kwargs):
    print(a)
    print(c)
    print(args)
    print(*args)
    #解释器拆包传递
    print(kwargs)
    for key,value in kwargs.items():
        print('key',key,'value',value)
sum_num(1,2,3,c=5,m=4,n=5)
#顺序(位置参数,args,默认值参数,kwargs)


'''*的作用'''
def info(name,age,gender):
    print(name,age,gender)

a = ['zhang1',19,'boy']
b = ['zhang2',1,'boy']
c = ['zhang3',9,'boy']

info(a[0],a[1],a[2])
info(*b)
#*自动拆包,挨个传递(参数的个数要相等)

全局变量和局部变量

name='zhang'

def info1():
    #局部变量
    name='wang'
    print(name)


def info2():
    '''
    这个函数实现全局变量的功能
    :return:
    '''
    global name
    name='xxxxxxx'
    print(name)


def info3():
    print(name)

info1()
info2()
info3()

L(局部命名空间) E(外部嵌套函数) G(全局命名空间) B(内置命名空间)
尽量不要使用同名的变量

猜你喜欢

转载自blog.csdn.net/Pseudolover/article/details/88241202