python知识点

本文解析了Python中关于作用域的规则,包括全局与局部作用域的区别、作用域链的查找机制,以及Python代码执行的基本流程。通过具体示例说明了函数执行过程中变量查找的过程。

python代码的执行不依赖于main函数;
python代码从没有缩进的代码开始执行。
区分:主执行文件、被调用文件
def foo():

  str="function"
  print(str)
if _name_ =="_main_":
  print("main")
  foo()
如果这个文件被别的文件当作模块调用时,此时name的值为文件的名字,否则默认值为main。

 

1、python没有块级作用域。代码块里的变量外部可以调用。
2、局部作用域:函数是个单独的作用域,python中没有块级作用域,但是有局部作用域。
3、作用域链:python中有作用域链,变量会由内到外找,先去自己作用域去找,自己没有再去上级去找,直到找不到报错。
例:
name="lzl"
def f1():
  print(name)
def f2():
  name="eric"
  return f1
ret=f2()
ret()

#输出:lzl

分析:f2()执行结果为函数f1的内存地址,即ret=f1;执行ret()等同于执行f1(),执行f1()时与f2()没有任何关系,name="lzl"与f1()在一个作用域链,函数内部没有变量是会向外找,所以此时变量name值为"lzl";

记住:函数在未执行之前,作用域已经形成,作用域链也已经生成。

转载于:https://www.cnblogs.com/zgang/p/10634882.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值