当前位置 博文首页 > python模块中判断全局变量的赋值的实例讲解

    python模块中判断全局变量的赋值的实例讲解

    作者:小妮浅浅 时间:2021-05-04 18:06

    1、在模块中,我们需要判断__name__是否被赋值为“__main__”。

    python fibo.py <arguments>

    2、在脚本执行的情况下,模块的__name__属性将被赋值为__main__,这就是原因所在。

    $ python fibo.py 50
    0 1 1 2 3 5 8 13 21 34

    3、若以模块导入,则不会执行:

    >>> import fibo
    >>>

    知识点扩展:

    Python动态声明变量赋值代码实例

    通过exec()、globals()和locals()

    # 通过exec()
    for i in range(1, 4):
     # 第一次循环 i=1 时,会执行字符串中的python语句 ex1 = "exec1",以此类推
     exec(f'ex{i} = "exec{i}"')
    
    # 通过globals()和locals()
    def test():
     # globals()
     for i in range(1, 4):
      # 第一次循环 i=1 时,执行 globals()['gb1'] = 'global1', globals()是一个dict
      globals()[f'gb{i}'] = f'global{i}'
    
     # locals()
     for i in range(1, 4):
      locals()[f'lc{i}'] = f'local{i}'
    
     # 尝试打印locals的变量
     try:
      print(lc1, lc2, lc3) # 会报错
     except Exception as e:
      print(e)
      print(locals()['lc1'], locals()['lc2'], locals()['lc3']) # 通过键值对
    
    if __name__ == '__main__':
     # 执行
     test()
     print('---------------------')
     # 打印函数定义的全局变量
     print(gb1, gb2, gb3)
     print('---------------------')
     # 打印通过exec()定义的变量
     print(ex1, ex2, ex3)

    输出结果:

    name 'lc1' is not defined
    local1 local2 local3
    ---------------------
    global1 global2 global3
    ---------------------
    exec1 exec2 exec3
    js
    下一篇:没有了