内容:
time.sleep()的用法:
import time #使用time模块
result = [1,1]
while True:
num = result[-1] + result[-2]
result.append(num)
if result[-1] >= 100:
break
print(result)
time.sleep(1) # 设置time睡眠时间,每隔一秒打印一次
def func(a1,a2,a3):
print(a1,a2,a3)
func(1,"sadf",True)
def func(a1,a2)
print(a1,a2)
func(1,2)
def func(a1,a2):
print(a1,a2)
func(a2=1,a1=2)
#示例:
def func(a1,a2,a3):
print(a1,a2,a3)
#func(a2=1,a1=2,a3=3)
#func(1,a2=2,a3=3)
#func(a1=1,a2=2,3) 错误,位置参数应在前,关键字参数应在后,
#func(1,a2=2,3) 错误,位置参数应在前,关键字参数应在后,
def func(a1,a2=2,a3=3):
print(a1,a2,a3)
#func(a1=1,a2=2,a3=333)
#func(1)
def func(*args):
print(args)
#func(1,22,33,(1,2,3),["asf",789],"oiquwer") 都可传入一个值的args,args为(传入值组成的元组tuple)
#func(*(11,22,33)) 结果为(11,22,33)
#func((11,22,33)) 结果为((11,22,33))
def func(a1,*args):
print(a1,args)
# func(1,(11,22,33)) 结果为1,(11,22,33)
# func(1,2,3,4,5,6) 结果为1,(2,3,4,5,6)
*(必须为两个*
),只能传字典,值为传入的字典def func(**kwargs):
print(kwargs)
func(k1=1,k2="asdf") #结果为 {'k1': 1, 'k2': 'asdf'}
func(**{"k1":1,"k2":"asdf"}) #结果为 {'k1': 1, 'k2': 'asdf'}
可接收任意参数(位置参数+关键字参数)
def func(*args,**kwargs):
print(args,kwargs)
func(1,2,3,k1=55,k2=89) #结果为(1,2,3) {'k1':55,'k2':89}
func(*[1,2,3],k1=55,k2=89) #结果为(1,2,3) {'k1':55,'k2':89}
func(*[1,2,3],**{"k1":55,"k2":89}) #结果为(1,2,3) {"k1":55,"k2":89}
func(11,22,*[1,2,3],k1=55,k2=89,**{"k11":55,"k12":89})
#结果为(11, 22, 1, 2, 3) {'k1': 55, 'k2': 89, 'k11': 55, 'k12': 89}
def func1(a1,a2):
pass
def func2(a1,a2=None):
pass
def func3(*args,**kwargs):
pass
调用函数(传参)
一定要记住,位置参数在前,关键字参数在后
python中:
py文件:全局作用域
函数:局部作用域
a=1
def func():
x1=666
print(x1)
print(a)
print(b)
b=2
func() # 666,1,2
print("----------分界线1----------")
a = 8888
def func2():
print(a,b) #从上往下执行,如果函数体内有变量在全局更改了,则执行到调用函数的前面才重新赋值
func()
func2() #报错,因为从上往下执行中,b没有值
b=2222
print("----------分界线2----------")
#从上往下执行,如果函数体内有变量在全局更改了,则执行到调用函数的前面才重新赋值
a=1
def func():
x1=666
print(x1)
print(a)
print(b)
b=2
b=222
func() #调用函数时,输出结果为x1=666,a=1,b=222
b=8888
print(b) #输出结果为8888
#错误示例
def func():
x1=666
print(x1)
func()
print(x1) #因为x1的作用域在函数体中,全局调用不了函数体内局部作用域的赋值
总结:
一个函数就是一个作用域
作用域中查找数据规则:优先在自己的作用域找数据,自己没有就去 "父级" -> 全局作用域 去找,全局里没有就报错
x = 11
def func():
x = 8
print(x) #8
def x1():
print(x) #8
x1()
x = 9
x1() #9
x = 10
print(x) #10
func()
子级作用域中重新赋值,不会影响到父级和全局的变量赋值
子级作用域中修改可变类型变量,则会影响到父级和全局的可变变量值
info = [11,22]
def func():
info.append(33)
print(info)
func() #结果为[11,22,33]
global:在局部变量中强制赋值,修改全局变量
name = "yanan"
def func():
global name
name = "alec"
func()
print(name) #输出结果为name = alec
#######################################
name = ['wo','yanan']
def func():
global name
name = "alec"
func()
print(name) #输出结果为name = alec
########嵌套内的函数中,global修改的也是全局变量
name = "yanan"
def func():
name = "centos"
def inner():
global name
name = 999
print("inner",name) #name = 999
inner()
print("func",name) #name = centos
func()
print("全局变量",name) #name = 999(被global修改过的变量)
nolocal:只能用在嵌套函数中,嵌套函数中只修改上层的赋值
name = "yanan"
def func():
name = "centos"
def inner():
nonlocal name
name = 999
print("inner",name) #name = 999
inner()
print("func",name) #name = 999(被nonlocal修改过的变量)
func()
print("全局变量",name) #name = "yanan"(全局未被修改)
全局变量由大写字母组成,函数体内部可由小写字母组成。类似于以下代码
USER_LIST = [11,22,33]
def func():
USER_LIST.append(44)
USER_LIST.append(550)
func()
print(USER_LIST)
原文:https://www.cnblogs.com/lynlearnde/p/11643517.html