python全栈 S3--15day--(2)
一、局部变量与全局变量
全局变量:顶头写的,无缩进,在整个文件的任何地方都可以进行调用
局部变量:在子程序中,有缩进,
在子程序中,如果局部变量和全局变量重名,那么调用局部变量的时候,只调用局部变量不会调用全局变量,如果在子程序中也想要直接调用全局变量那么可以global +变量名,获取的值就是全局变量,可以对其进行修改,注意golbal的添加位置
name="jay" def test(): global name name="james" print(name) test() print(name)
name="jay" def test(): # name="james"这个局部变量不能在golbal的前面,否则会报错 # global name声明调用全局变量 # name="jake"修改全局变量 print (name) test()
如果不使用golbal关键字,那么只能调用全局变量不能给它重新赋值,如果重新赋值的话就会报错,就像下面的一样
name="james" def test(): print (name) name="jay" print (name) test()
如果不使用golbal关键字,能调用全局变量不能给它重新赋值,但是可以对全局变量进行修改,前提是全局变量是一个列表
name=["jay","james",1,2,3,4,] def test (): name.append("nelly") print (name) test()
注:一般在使用的过程中全局变量写成大写的形式,局部变量写成小写的形式,这样避免引起冲突,方便调用,如果不是一个级别调用全局变量,那么不会受到影响
3、函数可以进行嵌套
name="james" def test(): name="jay" print(name) def jake(): def aimee(): def smile(): print ("lixiao") print("jdkjf") print ("jay最帅") jake() test()
4、nonlocal这个是寻找上一级的变量
name="jay" def test(): name="james" def jake(): nonlocal name print (name) jake() print (name) test()
5、前向引用
三个例子,调用一个函数的时候会顺着调用另一个函数,下面这几个例子就叫前向引用也叫风湿理论
# 三个例子 # 1、会报错因为调用的函数根本不存在 # def test(): # print ("jay") # jake() # test() # # 不会报错 # def jake(): # print ("james") # def test(): # print ("jay") # jake() # test() # 会报错 def test(): print ("jay") jake() test() def jake(): print ("james")
6、风湿理论:函数即变量

7、补充一点,如果全局变量别修改之后,再次进行调用的时候,调用之后的是别修改之后的变量
name="jay" def test(): name="james" def jake(): global name name="nelly" print (name) jake() test() print (name)
8、函数递归:就是将所要的值一层一层的去寻找,返回的值再一层一层的返回来
这个import time是引用别人写好的代码块,表示时间
这是一个死循环,表示再进行下一次循环的时候先沉睡3秒钟,如果无限循环的话,会把内存称爆,所以会直接报错,所以必须有个结束条件
import time def test(n): print (n) time.sleep(3) test(n) test(10)
举例一个简单的函数递归形式
def test(n): print (n) if int(n/2)==0: return n else: res=test(n/2) # return res test(10)
浙公网安备 33010602011771号