總體來說關係從上到下:包——子包——模組——全域性變數+函式,函式——變數。
一、包(packages)
包是指乙個包含模組與乙個特殊的__init__.py檔案的資料夾。
二、模組(modules)
乙個模組可以被其他程式匯入並執行其功能。通常通過使用 import 和 from..import 語句來實現。
比如:import sys ; import math from sqrt
三、函式(functions)
函式是指可重複使用的程式片段。你可以為該片段命名,並通過其名字在程式任何地方執行。這就是呼叫(calling)函式(與系統內建函式不同)。函式可以通過關鍵字 def 來定義。
比如:def say_hello():
def 後面的便是你自己定義的函式識別符號名稱,注意圓括號和冒號不可缺少!在圓括號中間可以包括一些變數的名稱,比如print_max(a,b);冒號後面另起一行是對函式內容的編碼。
3.1函式引數
上面的圓括號裡面的變數稱為「形參」(parameters),指的是定義函式時給定的名稱。在之後呼叫函式時圓括號內所提供的值被稱為「實參」(arguments)。
可以在函式定義時附加乙個賦值運算子(=)來為引數指定「預設引數值」(應為常數)。注意:在函式的引數列表中擁有預設引數值的引數不能位於沒有預設引數值的引數之前。
「位置引數」(positional arguments):在呼叫函式時根據函式定義的引數位置來傳遞引數值。
「關鍵字引數」(keyword arguments):通過命名(關鍵字)而非位置來指定函式中的引數。注意:有
位置引數時,位置引數必須在關鍵字引數前面;關鍵字引數間不存在先後順序。
「可變引數」:可以使定義的函式裡面能夠有任意數量的變數,也就是引數數量是可變的,可以通過星號(*)來實現。
「元組」(tuple):比如*param的星號引數,即從此處開始直到結束的所有位置引數都將被收集成乙個稱為「param」的元組。
「字典」(dictionary):比如**param的雙星號引數,即從此處開始直到結束所有關鍵字引數都將被收集成乙個名為「param」的字典。
3.2區域性變數
存在於定義函式塊內的變數稱為「區域性變數」。它們不會以任何方式與身處函式之外但具有相同名稱的變數發生關係。
3.3 return 語句
用於從函式中返回,也就是中斷函式。我們也可以選擇在中斷函式時從函式中返回乙個值。
3.4 文件字串(docstrings 即:documentation strings)
文件字串所約定的是一串多行字串,第一行以某一大寫字母開始,句號結束;第二行為空行;第三行開始是任何詳細的解釋說明。
可以通過使用函式的__doc__(雙下劃線)屬性來獲取函式的文件字串屬性。
比如:print(print_max.__doc__) #其中print_max為乙個定義的函式名。
四、全域性變數(global 語句)
若想在函式塊內改變函式塊之外的變數值,可以通過global語句。
比如 :x=50
def func():
global x
x=2print('x is',x)
此時輸出的x值便是2了。可以在同一句global中指定不止乙個的全域性變數,例如:global x,y,z
從變數到常量
現階段,我是乙個 變數 而且在接下來很長的一段時間內,我都無法改變我是乙個 變數 的狀況。為什麼說自己是變數呢?因為,我覺得自己容易受他人影響。看部落格 看新聞 看微博 和別人聊天 看 看書,都是被別人影響的過程。被別人影響不一定是壞事,但問題是有多少人 多少知識在影響你,有多少人和資訊能對你的人生...
作文 從指標變數到指標函式,路過函式指標
從最簡單的指標變數出發,比如int a 那麼a是乙個整形變數 現在int a 那麼a是乙個指標變數 指標a表達的是某個位址,它需要依託某個實實在在的東西 比如 typedef struct ringbuff t static ringbuff t ringbuff ringbuff t pringb...
從變數到指標到引用
1.再熟悉不過的說法,引用是變數的別名,操作引用跟操作變數的效果是一樣的 2.引用不是物件,因此,不會給引用分配記憶體空間 3.引數傳遞如果形參是引用,那麼此時引用的表現就像指標一樣,可以直接改變變數的值。這三個特點聽起來簡單,但是如果深入思考一下,就不由得疑惑 究竟是什麼造成了引用的這些特點,而引...