#####################全局变量#################################
#全局变量。 #全局变量每个def都能用,且都可以修改,所以建议少用全局变量。 #全局变量占内存。局部变量调用完之后内存就回收了,不会占内存。 import datetime def get_doday(): print(datetime.datetime.today()) name = 'testlin'#全局变量,只有int、元组才需要申明,list不需要申明 name2 = [] def get_name(): global name #将get_name中的局部变量改成全局变量 name = 'testlin1' #局部变量 name2.append('hahaha') print('get_name:',name) print(name2) def get_name2(): print('get_name2:',name) get_name2() get_name() print('函数外面的name:',name) #==========练习1================ money = 500 def test(consume): return money - consume def test1(money): return test(money)+money money = test1(money) print(money) #==========练习2================ def test(): global a a = 5 def test1(): c = a+5 return c res = test1() print(res) #---以上会报错,因为没有调用test(),直接调用test1(),那么不会定义a,报错a未定义 #优化: def test(): global a a = 5 def test1(): c = a+5 return c test() #先调用定义a,才不会报错 res = test1() print(res)#####################可变参数和关键字#################################
#######可变参数######## def my(name,sex='女'): #name位置参数,必填 #sex 默认值参数,非必填 #可变参数 #关健值参数 pass #phone_num 可能会变成多个,此时使用可变参数 #变量名前面加星号'*' def send_sms(*args): #一个星号传的是元组 #可变参数,参数组 #1、不是必传 #2、他把传入的元素全部放到一个元组里 #3、不限制参数个数 #4、他用在参数比较多的情况 for p in args: print(p) #1、不传参数 send_sms() #2、传1个 send_sms(1311111111) #3、传N个 send_sms(13111111112,12121212121,122222222121) #####关键字参数####### def send_sms2(**kwargs): #两个星号传的是字典,keywordargs #1、不是必传 #2、不限制参数个数 print(kwargs) send_sms2() send_sms2(name = 'xaxa',sex = 'nv') send_sms2(addr = '中国',contry = '北京',c = '大大大',d = 'dddd') def my(name,country='china',*args,**kwargs): #如果四个必须都要,必须按照以下顺序:1、位置参数 2、默认值参数 3、可变参数 4、关键字参数 print(name) print(country) print(args) print(kwargs) my('testlin','Japan','beijing','天通苑',color='红色',age=33)
转载于:https://www.cnblogs.com/xm-sunnylin/p/9641723.html