# 函数内部定义变量 deftry_to_change(n):
n="qiziyi"
name ='laoda'
try_to_change(name)
name #'laoda'# 上式原理
name ='laoda'
n = name
n ='qiziyi'
name #'laoda'# 函数内部修改变量defchange(n):
n[0]='qiziyi'
names=['abc','def']
change(names)
names #['qiziyi', 'def']# 上式原理
names=['abc','def']
n=names
n[0]='qiziyi'
names #['qiziyi', 'def']# 不修改 创建副本defchange(n):
n[0]='qiziyi'
names=['abc','def']
change(names[:])
names
# 上式原理
names=['abc','def']
n=names[:]# n为names的副本# n is names false# n==names true
n[0]='qiziyi'
names
# 生成斐波那契数列的函数定义和调用 (小于n截止、打印数列)deffib(n):'''生成斐波那契数列小于n时截止'''
a, b =0,1while a < n:print(a,end=' ')
a, b = b, a+b
print()
fib(1000)# 为函数和自定义对象动态增加成员deffunc():print(func.x)
func.x =3
func()# 删除xdel func.x
# 定义一个函数 输出a和b中的最大值defprintMax(a,b):if a>b:print(a)elif b>a:print(b)else:print('a=b')print()
printMax(1,2)# 在函数内部直接修改形参 不影响实参 而是创建了一个新的变量defaddOne(a):print(id(a),':', a)
a +=1print(id(a),':', a)
v =3id(v)
addOne(v)defaddone(a):
a+=1print(a)
h=3
addone(h)defmodify(v):#修改列表元素值
v[0]= v[0]+1
a =[2]
modify(a)
a
defmodify(v, item):#为列表增加元素
v.append(item)
a =[2]
modify(a,3)
a
defmodify(d):#修改字典元素值或字典增加元素
d['age']=38
a ={'name':'Dong','age':37,'sex':'Male'}
modify(a)
a
deftest(x:int, y:int)->int:'''x and y must be integers, return an integer x+y'''assertisinstance(x,int),"x must be integer"assertisinstance(y,int),"y must be integer"
z = x+y
assertisinstance(z,int),"must return an integer"return z
test(1,2)# test(1,2.0)defdemo(a, b, c):print(a, b, c)
demo(3,4,5)# 默认值参数必须放在最右侧deff(a,b,c=5):print(a,b,c)defsay( message, times =1):print(message * times)
say('hello')
say('hi',7)# 不指定分隔符默认空格连接defJoin(List,sep=None):return(sep or' ').join(List)
aList =['a','b','c']
Join(aList)
Join(aList,',')# 默认值参数如果使用不当,会导致很难发现的逻辑错误defdemo(newitem, old_list=[]):
old_list.append(newitem)return old_list #添加newitem对old_list进行更新print(demo('5',[1,2,3,4]))#rightprint(demo('aaa',['a','b']))#rightprint(demo('a'))#rightprint(demo('b'))#wrong# 改进defdemo(newitem,old_list=None):if old_list isNone:
old_list=[]
old_list.append(newitem)return old_list
print(demo('a'))print(demo('b'))# 默认值参数
i=3deff(n=i):#参数n的值仅取决于i的当前值print(n)
f()
i=5
f()
f.__defaults__#查看函数默认值参数的当前值# 可变长度参数deffunc_4(a,b,c=4,*aa,**bb):print(a,b,c)print(aa)print(bb)
func_4(1,2,3,4,5,6,7,8,9,xx='1',yy='2',zz=3)
func_4(1,2,3,4,5,6,7,xx='1',yy='2',zz=3)