4.0 Python 變量與作用域

在python中,變量的作用域決定了變量在哪些位置可以被訪問。一個程序中的變量并不是所有的地方都可以訪問的,其訪問權限決定于變量的賦值位置。python中有兩種最基本的變量作用域:局部作用域和全局作用域。局部變量是在函數內部定義的變量,只能在其被聲明的函數內部訪問。而全局變量則是在函數外定義的變量,可以在整個程序的范圍內被訪問。局部變量只有在其被聲明的函數內部才能被訪問,全局變量則可以在程序的任何地方被訪問。變量的作用域對于程序的正確性和可讀性非常重要,需要在編寫程序時注意變量的賦值位置以及其作用域。

變量的作用域可分為以下幾種狀態:

  • L(Local):局部作用域
  • E(Enclosing):閉包函數外的函數中
  • G(Global):全局作用域
  • B(Built-in):內建作用域

變量的屬性與變量的執行依據:

  • 變量的先后順序是:L –> E –> G –>B 的規則查找
  • 在子程序中定義的變量稱為局部變量
  • 在程序的一開始定義的變量稱為全局變量
  • 全局變量作用域是整個程序,局部變量作用域是定義該變量的子程序
  • 當全局變量與局部變量同名時:在定義局部變量的子程序內,局部變量起作用,在其它地方全局變量起作用
  • 當內部作用域想修改外部作用域的變量時,就要用到global和nonlocal關鍵字了
  • 局部變量只能在其被聲明的函數內部訪問,而全局變量可以在整個程序范圍內訪問

全局變量: 如下定義并使用一個全局變量,來看一下效果吧.

>>> import os
>>> import sys
>>> 
>>> sum=100                      #這就是一個全局變量
>>> 
>>> def print_sum():print("函數中調用sum: ",sum)>>> print_sum()                  #函數中可以讀取到
函數中調用sum:  100
>>> 
>>> print("函數外調用sum: ",sum)  #外部依然可以讀取到
函數外調用sum:  100

局部變量: 如下定義并使用一個局部變量,來看一下效果吧.

>>> import sys
>>> import os
>>> 
>>> def print_sum():sum=100print("函數中調用sum: ",sum)>>> print_sum()
函數中調用sum:  100
>>> print("函數外調用sum: ",sum)
函數外調用sum:  <built-in function sum>

局部轉全局: 將一個局部變量通過global關鍵字,轉換為全局變量.

>>> import os
>>> import sys
>>> 
>>> def print_num():global numnum=1000print("函數內調用: ",num)>>> print_num()
函數內調用:  1000
>>> 
>>> print("函數外調用: ",num)
函數外調用:  1000

外層非全局: 如果要修改嵌套作用域(enclosing 作用域,外層非全局作用域)中的變量則需要nonlocal關鍵字聲明一下.

>>> import sys
>>> 
>>> def outer():num=100def inner():nonlocal num             #聲明成外層非全局作用域num=1000print("inner層:",num)inner()print("outer層:",num)>>> outer()
inner層: 1000
outer層: 1000

本文作者: 王瑞
本文鏈接: https://www.lyshark.com/post/43aec37f.html
版權聲明: 本博客所有文章除特別聲明外,均采用 BY-NC-SA 許可協議。轉載請注明出處!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/34701.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/34701.shtml
英文地址,請注明出處:http://en.pswp.cn/news/34701.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

day24-106.從中序與后序遍歷序列構造二叉樹

106.從中序與后序遍歷序列構造二叉樹 力扣題目鏈接(opens new window) 根據一棵樹的中序遍歷與后序遍歷構造二叉樹。 注意: 你可以假設樹中沒有重復的元素。 例如&#xff0c;給出 中序遍歷 inorder [9,3,15,20,7]后序遍歷 postorder [9,15,7,20,3] 返回如下的二叉樹&am…

前端跨域問題解決方法

跨域是WEB瀏覽器專有的同源限制訪問策略。(后臺接口調用和postman等工具會出現) 跨源資源共享&#xff08;CORS&#xff0c;或通俗地譯為跨域資源共享&#xff09;是一種基于 HTTP 頭的機制&#xff0c;該機制通過允許服務器標示除了它自己以外的其他源&#xff08;域、協議或端…

java項目打包運行報異常:Demo-1.0-SNAPSHOT.jar中沒有主清單屬性

檢查后發現pom文件中有錯誤&#xff0c;需要添加build內容才能恢復正常。 添加下面文件后再次啟動恢復正常。 <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactI…

C語言atoi函數將字符串類型轉換為整型

atoi() 是C標準庫中的一個函數&#xff0c;用于將字符串轉換為整數。函數原型如下&#xff1a; int atoi(const char *str); 參數 str 是一個指向要轉換的字符串的指針。atoi() 函數會嘗試將字符串中的數字部分轉換為整數&#xff0c;并返回轉換后的整數值。如果字符串中不僅包…

Add-in Express for Microsoft Office and Delphi Crack

Add-in Express for Microsoft Office and Delphi Crack 適用于Microsoft Office和Delphi VCL的Add-in Express使您能夠在幾次點擊中為Microsoft Office開發專業插件。它生成基于COM的項目&#xff0c;這些項目包含Microsoft Office外接程序或智能標記的所有必要功能&#xff0…

CTFshow web93-104關

這周要學習的是php代碼審計 根據師兄的作業 來做web入門的93-104關 93關 看代碼 進行分析 他的主函數 include("flag.php"); highlight_file(__FILE__); if(isset($_GET[num])){ $num $_GET[num]; if($num4476){ die("no no no!"); …

認識http的方法、Header、狀態碼以及簡單實現一個http的業務邏輯

文章目錄 http的方法http狀態碼http重定向http常見Header實現簡單業務邏輯Protocol.hppUtil.hppServer.hppServer.cc 效果 http的方法 方法說明支持的HTTP版本GET獲取資源1.0/1.1POST傳輸實體主體1.0/1.1PUT傳輸文件1.0/1.1HEAD獲得報文首部1.0/1.1DELETE刪除文件1.0/1.1OPTIO…

【ts】【cocos creator】excel表格轉JSON

需要將表格導出為text格式放到項目resources/text文件夾下 新建場景&#xff0c;掛載到Canvas上運行 表格文件格式&#xff1a; 保存格式選text tableToJson : import CryptoJS require(./FileSaver);const { ccclass, property } cc._decorator;ccclass export default c…

SpringBoot案例-部門管理-新增

根據頁面原型&#xff0c;明確需求 頁面原型 需求 閱讀接口文檔 接口文檔鏈接如下&#xff1a; 【騰訊文檔】SpringBoot案例所需文檔 https://docs.qq.com/doc/DUkRiTWVaUmFVck9N 思路分析 前端在輸入要新增的部門名稱后&#xff0c;會以JSON格式將數據傳入至后端&#xf…

SpringBoot 3.x整合Fluent Mybatis極簡流程

此為基礎配置&#xff0c;不包括其他高級配置&#xff0c;需要其他高級配置請查閱官方文檔&#xff1a;[fluent mybatis特性總覽 - Wiki - Gitee.com](https://gitee.com/fluent-mybatis/fluent-mybatis/wikis/fluent mybatis特性總覽) 版本信息 Spring Boot 版本&#xff1a…

C語言創建目錄(文件夾)之mkdir

一、mkdir 說明&#xff1a;創建目錄。 頭文件庫&#xff1a; #include <sys/stat.h> #include <sys/types.h>函數原型&#xff1a; int mkdir(const char *pathname, mode_t mode);mode方式&#xff1a;可多個權限相或&#xff0c;如0755表示S_IRWXU | S_IRGRP…

undefined reference to `dlopen‘ ‘SSL_library_init‘ `X509_certificate_type‘

使用Crow的時候需要注意crow依賴asio依賴OpenSSL&#xff0c;asio要求1.22以上版本&#xff0c;我使用的是1.26.0&#xff1b; 這個版本的asio要求OpenSSL是1.0.2&#xff0c;其他版本我得機器上編不過&#xff0c;ubuntu上默認帶的OpenSSL是1.1.1; 所以我下載了OPENSSL1.2.0重…

MySQL高階知識點(一)一條SQL【更新】語句是如何執行的

一條SQL【更新】語句是如何執行的 首先&#xff0c;可以確定的說&#xff0c;【查詢】語句的那一套流程&#xff0c;【更新】語句也是同樣會走一遍&#xff0c;與查詢流程不一樣的是&#xff0c; 更新語句涉及到【事務】&#xff0c;就必須保證事務的四大特性&#xff1a;ACID&…

項目介紹:《WeTalk》網頁聊天室 — Spring Boot、MyBatis、MySQL和WebSocket的奇妙融合

目錄 引言&#xff1a; 前言&#xff1a; 技術棧&#xff1a; 主要功能&#xff1a; 功能詳解&#xff1a; 1. 用戶注冊與登錄&#xff1a; 2. 添加好友 3. 實時聊天 4. 消息未讀 5. 刪除聊天記錄 6. 刪除好友 未來展望&#xff1a; 項目地址&#xff1a; 結語&am…

【redis 3.2 集群】

目錄 一、Redis主從復制 1.概念 2.作用 2.1 數據冗余 2.2 故障恢復 2.3 負載均衡 2.4 高可用 3.缺點 4.流程 4.1 第一步 4.2 第二步 4.3 第三步 4.4 第四步 5.搭建 5.1 主 5.2 從 6.驗證 二、Reids哨兵模式 1.概念 2.作用 2.1 監控 2.2 自動故障轉移 2.…

分布式應用:Zabbix監控Nginx

目錄 一、理論 1.Zabbix監控Nginx 二、實驗 1.Zabbix監控Nginx部署 三、問題 1.重啟zabbix客戶端失敗 2.zabbix服務端測試客戶端nginx狀態失敗 3.nginx啟動失敗 4.權限不夠 一、理論 1.Zabbix監控Nginx &#xff08;1&#xff09;環境 zabbix服務端&#xff1a;192.1…

Tomcat線程池原理

1. 一個 SpringBoot 項目能同時處理多少請求&#xff1f;tomcat容器&#xff0c; 200 次。 2. 怎么來的&#xff1f; 而點擊這些線程&#xff0c;查看其堆棧消息&#xff0c;可以看到 Tomcat、threads、ThreadPoolExecutor 等關鍵字 基于“短時間內有 200 個請求被立馬處理…

分類預測 | Python實現LR邏輯回歸多輸入分類預測

分類預測 | Python實現LR邏輯回歸多輸入分類預測 目錄 分類預測 | Python實現LR邏輯回歸多輸入分類預測基本介紹模型描述源碼設計學習小結參考資料基本介紹 邏輯回歸是一種廣義線性的分類模型且其模型結構可以視為單層的神經網絡,由一層輸入層、一層僅帶有一個sigmoid激活函數…

設計模式十二:享元模式(Flyweight Pattern)

當我們需要創建大量相似對象時&#xff0c;享元模式可以幫助我們節省內存空間和提高性能。該模式通過共享相同的數據來減少對象的數量。 在享元模式中&#xff0c;有兩種類型的對象&#xff1a;享元&#xff08;Flyweight&#xff09;和非享元&#xff08;Unshared Flyweight&a…

Postman下載教程

目錄 下載 安裝 注意事項 看到很多小伙伴在問 Postman 下載的相關問題&#xff0c;花時間整理了下&#xff0c;下面教新入門的小伙伴如何去下載 Postman。 開始前我們可以先了解下&#xff1a;Postman 簡介 下載 第一步&#xff1a;進入 Postman 官網 首先&#xff0c;我…