day10 局部变量 全局变量 作用域前奏
生活随笔
收集整理的這篇文章主要介紹了
day10 局部变量 全局变量 作用域前奏
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
規則命名以及基本介紹 1 name="LHF" # 頂頭寫的全局都可以調用的就是全局變量,命名規則要求大寫全局變量 2 def chang_name(): 3 # global name # 在函數內定義全局變量,之后函數內調用改變就會全局都改變,如果要用到此命令一定要在函數最前面用,不然會報錯 4 name = "shuai" # 局部變量,值用于子程序所用,其他程序無法調用,命名規則要求全部小寫 5 print("chang_name",name) # 優先取局部變量,局部取不到就取全局,在局部里面有的前提下,無法強制調用全局的 6 chang_name() 7 print(name) # 全局調用的時候只能調用全局的
內部改變全局變量的情況 global 的使用
函數和內存的交互原理,讀取和執行 1 NAME = "yangtuo" 2 def chang_name (): # 強勢理解函數被讀取到內存后未執行,被調用后才會被執行 3 global NAME 4 NAME = "tiancai" 5 print(NAME) 6 7 print(NAME) # yangtuo 未調用函數時,不會改變 8 9 def chang_name1(): 10 print(NAME) 11 12 chang_name1() # yangtuo 仍然未調用 13 chang_name() # yangtuo 仍然未調用 14 chang_name1() # tiancai 被調用后改變 15 print(NAME) # tiancai 被調用后改變,全局再次使用受影響
更改全局變量 1 name = "yangtuo" 2 def yang(): 3 name = "yang" 4 def tuo(): 5 global name 6 name = "tuo" 7 tuo() 8 print(name) 9 10 print(name) 11 yang() 12 print(name)
更改上一級變量 1 name = "yangtuo" 2 def yang(): 3 name = "yang" 4 def tuo(): 5 nonlocal name 6 name = "tuo" 7 tuo() 8 print(name) 9 10 print(name) 11 yang() 12 print(name)
?
總結:全局變量最外圈 用全大寫命名
局部變量在函數內 用全小寫命名
局部變量與全局變量互不干涉。
函數調用不到局部變量會向上一級尋找直到找到最外層的全局變量
global 可以在函數內將全局變量更改
nolocal 可以在函數內對上一級的變量更改
ps : 想試驗一下內部一個變量和外部重名的同時再宣告全局更改后,是先調用哪一個結果報錯了 1 name = 123 2 def change_name(): 3 name = 456 4 global name 5 name = 789 6 return name 7 print(name) 8 print(change_name()) 9 print(name) 1 global name 2 ^ 3 SyntaxError: name 'name' is assigned to before global declaration
?
轉載于:https://www.cnblogs.com/shijieli/p/9687586.html
總結
以上是生活随笔為你收集整理的day10 局部变量 全局变量 作用域前奏的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 067_VFPage中Js与contro
- 下一篇: WPF-3D动效-文字球形环绕