網站首頁 編程語言 正文
前言
全局變量是那些沒有在任何函數內部定義并具有全局范圍的變量,而局部變量是那些在函數內部定義的變量,其范圍僅限于該函數。換句話說,我們可以說局部變量只能在初始化它的函數內部訪問,而全局變量在整個程序和每個函數內部都可以訪問。局部變量是那些在函數內部初始化并且僅屬于該特定函數的變量。它不能在函數之外的任何地方訪問。讓我們看看如何創建一個局部變量。
示例:?創建局部變量
def f():
# local variable
s = "I love python"
print(s)
# 驅動程序代碼
f()
輸出:
I love python
如果我們嘗試在函數外部使用這個局部變量,那么讓我們看看會發生什么。
例子:
def f():
# local variable
s = "I love python"
print("Inside Function:", s)
# 驅動程序代碼
f()
print(s)
輸出:
NameError: name 's' is not defined
全局變量
這些是在任何函數之外定義的并且可以在整個程序中訪問的那些,即在每個函數的內部和外部。讓我們看看如何創建一個全局變量。
示例:?定義和訪問全局變量
# This function uses global variable s
def f():
print("Inside Function", s)
# Global scope
s = "I love python"
f()
print("Outside Function", s)
輸出:
Inside Function I love python
Outside Function I love python
變量 s 被定義為全局變量,既可以在函數內部使用,也可以在函數外部使用。
注意:?由于沒有局部變量,因此將使用全局變量的值,但請確保局部變量和全局變量應具有相同的名稱。
現在,如果有一個同名的變量在函數內部以及全局初始化怎么辦?,F在問題來了,局部變量是否會對全局變量產生一些影響,反之亦然,如果我們在函數 f() 中更改變量的值會發生什么?它也會影響全局變量嗎?我們在下面的代碼中對其進行測試:
# 該函數有一個名稱與 s 相同的變量。
def f():
s = "Me too."
print(s)
# 全局范圍
s = "I love python"
f()
print(s)
輸出:
Me too.
I love python
如果在函數范圍內也定義了具有相同名稱的變量,那么它將僅打印函數內部給出的值,而不是全局值。?
問題是,如果我們嘗試更改函數內部的全局變量的值會怎樣。讓我們用下面的例子來看看。
例子:
# 該函數使用全局變量 s
def f():
s += 'GFG'
print("Inside Function", s)
# Global scope
s = "I love python"
f()
輸出:
UnboundLocalError: local variable 's' referenced before assignment
為了使上述程序正常工作,我們需要使用“global”關鍵字。讓我們看看這個全局關鍵字是什么。
全局關鍵字
如果我們想要進行賦值或更改全局變量,我們只需要在函數中使用global 關鍵字。?打印和訪問不需要全局。由于在 f() 中對 s 的賦值,Python“假設”我們需要一個局部變量,因此第一條語句會拋出錯誤消息。如果沒有將其聲明為全局變量,則在函數內部更改或創建的任何變量都是局部變量。要告訴 Python,我們要使用全局變量,我們必須使用關鍵字?“global”?,如以下示例所示:?
示例 1:?使用全局關鍵字
# 此函數修改全局變量's'
def f():
global s
s += ' HY'
print(s)
s = "Look for Haiyong Python Section"
print(s)
# 全局范圍
s = "Python is great!"
f()
print(s)
輸出:
Python is great! HY
Look for Haiyong Python Section
Look for Haiyong Python Section
現在沒有歧義了。?
示例 2:?使用全局變量和局部變量
a = 1
# 使用全局,因為沒有局部“a”
def f():
print('Inside f() : ', a)
# 變量“a”被重新定義為局部變量
def g():
a = 2
print('Inside g() : ', a)
# 使用 global 關鍵字修改全局 'a'
def h():
global a
a = 3
print('Inside h() : ', a)
# 全局范圍
print('global : ', a)
f()
print('global : ', a)
g()
print('global : ', a)
h()
print('global : ', a)
輸出:
global : ?1
Inside f() : ?1
global : ?1
Inside g() : ?2
global : ?1
Inside h() : ?3
global : ?3
原文鏈接:https://juejin.cn/post/7132019572651556872
相關推薦
- 2023-11-16 RuntimeError: Expected object of device type cuda
- 2022-05-26 openwrt安裝docker并啟動的操作方法_docker
- 2022-10-03 Android使用AudioRecord實現錄音功能_Android
- 2023-07-07 Spring整合Junit單元測試
- 2022-05-28 Python庫AutoTS一行代碼得到最強時序基線_python
- 2024-01-16 ignore_above 解決keyword字段超長
- 2022-10-04 Python基礎之dict和set的使用詳解_python
- 2022-09-19 Nginx配置Tcp負載均衡的方法_nginx
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支