pip源初始化
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple pip config set install.trusted-host pypi.tuna.tsinghua.edu.cn
VSCode插件安裝
- 語法檢查 flake8
- 代碼格式化 yapf
- 文件及文件夾圖標 vscode-icons
- 自動補全,如函數、類、方法 python-snippets
用戶配置
#launch.json 啟動配置,F5直接運行 "stopOnEntry": false #settings.json 用戶配置,啟用插件,保存自動代碼檢查和格式化
{
"terminal.integrated.sendKeybindingsToShell": true,
"window.zoomLevel": 1, //窗口縮放,單位20%
"python.formatting.provider": "yapf",
"python.linting.flake8Enabled": true,
"python.linting.lintOnSave": true, //保存自動語法檢查
"editor.formatOnSave": true, //保存自動格式化
"workbench.colorTheme": "Quiet Light",
"python.linting.flake8Args": [
"--max-line-length=256"
],
"explorer.confirmDelete": false,
"[python]": {
"editor.formatOnType": true
},
"terminal.integrated.defaultProfile.windows": "Command Prompt", //默認終端設置為cmd,默認為powershell,有些命令不兼容
"editor.mouseWheelZoom": true, //鼠標滾輪縮放(代碼)
"python.analysis.completeFunctionParens": true //自動補全括號
}
函數,參數,調用
#此為代碼規范示例代碼,實際使用中有些參數無法同時使用 def func(arg1, agr2, /, arg3, arg4, *, arg5, arg6, arg7=0, *tuplearg, **dictarg): pass
函數定義與調用時,參數傳遞分為以下類型
- 位置參數,只能按照參數定義的順序傳遞
- 關鍵字參數,按照 參數名稱=參數值 方式,不區分參數定義的順序
- 默認參數,函數定義時指定參數的默認值,但默認參數必須在參數列表最后面,但需要在 不定長參數 之前
- 不定長參數,或包裹參數,或包裝參數,將調用時多個值合并為一個值,只能定義在參數列表最后面
- 包裹元組參數,定義為參數名前加一個星號,如上tuplearg,只能定義一次,且需要在包裹字典參數之前,調用時將多個值(沒有明確參數名的)合并為元組使用
- 包裹字典參數,定義為參數名前加兩個星號,如上dictarg,只能定義一次,且需要在包裹元組參數之后,調用時將多個鍵值對(沒有明確參數名的)合并為字典使用
特別關注
- 參數列表中“/”符號,表示之前的參數為位置參數
- 參數列表中“*”符號,表示之后的參數為關鍵字參數,一般為有默認值的參數
- “*”符號與 不定長參數 同時定義時,只能在最后面定義包裹字典參數 **dictarg
如上定義,各參數特性如下
- arg1、arg2只能通過位置傳遞
- arg3,arg4可以通過位置 或 關鍵字傳遞
- arg5,arg6,arg7只能通過關鍵字傳遞,其中arg7有默認值,可以不傳遞
- 其他非鍵值對形式的參數,統一合并到元組 tuplearg 中
- 其他鍵值對形式的參數,統一合并到字典 dictarg 中
dict 字典定義方式
以下面字典內容為例
{ "a":1, "b":2 }
1.直接變量賦值
dict1={ "a":1, "b":2}
2.dict構造函數傳遞鍵值對賦值
#class dict(**kwarg) dict2=dict(a=1,b=2)
3.dict構造函數傳遞鍵值對(元組)列表
#class dict(iterable, **kwarg) dict3=dict([("a",1), ("b",2)])
4.dict構造函數傳遞映射
#class dict(mapping, **kwarg) dict4=dict(zip(["a","b"], [1,2]))
import 與 from import
- 包=文件夾,模塊=文件,對象=類、方法、模塊內對象
- import只能導入包、模塊,from import可以導入包、模塊、對象
- import執行多次也只會導入一次,導入后使用的是原來模塊內的模塊內對象,不會與當前模塊的對象重名覆蓋,from import執行多次會重新導入,導入后會在當前模塊定義新的對象,指向原來模塊的模塊內對象,且與當前模塊對象會相互覆蓋
open(filename, mode)
mode模式

變量與作用域
Python 中,程序的變量并不是在哪個位置都可以訪問的,訪問權限決定于這個變量是在哪里賦值的。
變量的作用域決定了在哪一部分程序可以訪問哪個特定的變量名稱。Python 的作用域一共有4種,分別是:
有四種作用域:
- L(Local):最內層,包含局部變量,比如一個函數/方法內部。
- E(Enclosing):包含了非局部(non-local)也非全局(non-global)的變量。比如兩個嵌套函數,一個函數(或類) A 里面又包含了一個函數 B ,那么對于 B 中的名稱來說 A 中的作用域就為 nonlocal。
- G(Global):當前腳本的最外層,比如當前模塊的全局變量。
- B(Built-in): 包含了內建的變量/關鍵字等,最后被搜索。
規則順序: L –> E –> G –> B。
在局部找不到,便會去局部外的局部找(例如閉包),再找不到就會去全局找,再者去內置中找。

global 和 nonlocal關鍵字
當內部作用域想修改外部作用域的變量時,就要用到 global 和 nonlocal 關鍵字了。
注意:global與nonlocal聲明,需要單獨一行,不能與賦值語句同時執行,即不能 global object=value
1.global,函數內部要修改全局變量,在函數內部首先執行 global object
num = 1 def fun1(): global num # 需要使用 global 關鍵字聲明 print(num) num = 123
2.nonlocal,函數內部想修改嵌套的外層函數變量,在函數內部首先執行 nonlocal object
def outer(): num = 10 def inner(): nonlocal num # nonlocal關鍵字聲明 num = 100 print(num) inner() print(num)
浙公網安備 33010602011771號