導航:首頁 > 編程語言 > pythonmain函數參數

pythonmain函數參數

發布時間:2022-07-12 08:53:35

python 怎麼寫main 函數

print'main'當腳本作為執行腳本時__name__的值為__main__當腳本作為模塊時__name__為模塊文件名。

⑵ 如何調用一個python模塊的main函數

f main():
print 'test ok'

if __name__ = "__main__":
main()

# test2.py
import test
test.main()

⑶ 調用下列python的主函數,並獲取到入參變化的值

在其它python文件中調用這個文件時,就不滿足__name__ == '__main__'這個條件了,所以你找錯地方了。

不通過python文件調用它,就滿足這個條件。


-----------------------------

一般情況下,我們都是在這個判斷後做測試:

⑷ Python 的函數是怎麼傳遞參數的

首先你要明白,Python的函數傳遞方式是賦值,而賦值是通過建立變數與對象的關聯實現的。
對於你的代碼:
執行 d = 2時,你在__main__里創建了d,並讓它指向2這個整型對象。
執行函數add(d)過程中:
d被傳遞給add()函數後,在函數內部,num也指向了__main__中的2
但執行num = num + 10之後,新建了對象12,並讓num指向了這個新對象——12。
如果你明白函數中的局部變數與__main__中變數的區別,那麼很顯然,在__main__中,d仍在指著2這個對象,它沒有改變。因此,你列印d時得到了2。
如果你想讓輸出為12,最簡潔的辦法是:
在函數add()里增加return num
調用函數時使用d = add(d)
代碼如下:
def add(num):
num += 10
return num
d = 2
d = add(d)
print d

⑸ python怎麼調用c的main函數

if __name__=="__main__": print 'main'

當腳本作為執行腳本時__name__的值為__main__當腳本作為模塊時__name__為模塊文件名。舉個例子,a.py作為執行腳本時__name__的值是__main__。有2個腳本,a.py和b.py,a中引入b,執行a.py時,在b中模塊的__name__就是b.py

⑹ python main函數有什麼用

print'main'當腳本作為執行腳本時__name__的值為__main__當腳本作為模塊時__name__為模塊文件名。

⑺ Python 函數中,參數是傳值,還是傳引用

首先還是應該科普下函數參數傳遞機制,傳值和傳引用是什麼意思?
函數參數傳遞機制問題在本質上是調用函數(過程)和被調用函數(過程)在調用發生時進行通信的方法問題。基本的參數傳遞機制有兩種:值傳遞和引用傳遞。
值傳遞(passl-by-value)過程中,被調函數的形式參數作為被調函數的局部變數處理,即在堆棧中開辟了內存空間以存放由主調函數放進來的實參的值,從而成為了實參的一個副本。值傳遞的特點是被調函數對形式參數的任何操作都是作為局部變數進行,不會影響主調函數的實參變數的值。
引用傳遞(pass-by-reference)過程中,被調函數的形式參數雖然也作為局部變數在堆棧中開辟了內存空間,但是這時存放的是由主調函數放進來的實參變數的地址。被調函數對形參的任何操作都被處理成間接定址,即通過堆棧中存放的地址訪問主調函數中的實參變數。正因為如此,被調函數對形參做的任何操作都影響了主調函數中的實參變數。
在python中實際又是怎麼樣的呢?
先看一個簡單的例子:

from ctypes import *
import os.path
import sys

def test(c):
print "test before "
print id(c)
c+=2
print "test after +"
print id(c)
return c

def printIt(t):
for i in range(len(t)):
print t[i]

if __name__=="__main__":
a=2
print "main before invoke test"
print id(a)
n=test(a)
print "main afterf invoke test"
print a
print id(a)

運行後結果如下:

>>>
main before invoke test
39601564
test before
39601564
test after +
39601540
main afterf invoke test
2
39601564

id函數可以獲得對象的內存地址.很明顯從上面例子可以看出,將a變數作為參數傳遞給了test函數,傳遞了a的一個引用,把a的地址傳遞過去了,所以在函數內獲取的變數C的地址跟變數a的地址是一樣的,但是在函數內,對C進行賦值運算,C的值從2變成了4,實際上2和4所佔的內存空間都還是存在的,賦值運算後,C指向4所在的內存。而a仍然指向2所在的內存,所以後面列印a,其值還是2.
如果還不能理解,先看下面例子

>>> a=1
>>> b=1
>>> id(a)
40650152
>>> id(b)
40650152
>>> a=2
>>> id(a)
40650140

a和b都是int類型的值,值都是1,而且內存地址都是一樣的,這已經表明了在python中,可以有多個引用指向同一個內存(畫了一個很挫的圖,見諒),在給a賦值為2後,再次查看a的內存地址,都已經變化了

而基於最前面的例子,大概可以這樣描述:

那python函數傳參就是傳引用?然後傳參的值在被調函數內被修改也不影響主調函數的實參變數的值?再來看個例子。

from ctypes import *
import os.path
import sys

def test(list2):
print "test before "
print id(list2)
list2[1]=30
print "test after +"
print id(list2)
return list2

def printIt(t):
for i in range(len(t)):
print t[i]

if __name__=="__main__":
list1=["loleina",25,'female']
print "main before invoke test"
print id(list1)
list3=test(list1)
print "main afterf invoke test"
print list1
print id(list1)

實際值為:

>>>
main before invoke test
64129944
test before
64129944
test after +
64129944
main afterf invoke test
['loleina', 30, 'female']
64129944

發現一樣的傳值,而第二個變數居然變化,為啥呢?
實際上是因為python中的序列:列表是一個可變的對象,就基於list1=[1,2] list1[0]=[0]這樣前後的查看list1的內存地址,是一樣的。

>>> list1=[1,2]
>>> id(list1)
64185208
>>> list1[0]=[0]
>>> list1
[[0], 2]
>>> id(list1)
64185208

結論:python不允許程序員選擇採用傳值還是傳引用。Python參數傳遞採用的肯定是「傳對象引用」的方式。這種方式相當於傳值和傳引用的一種綜合。如果函數收到的是一個可變對象(比如字典或者列表)的引用,就能修改對象的原始值--相當於通過「傳引用」來傳遞對象。如果函數收到的是一個不可變對象(比如數字、字元或者元組)的引用,就不能直接修改原始對象--相當於通過「傳值'來傳遞對象。

分類: python 基礎語法

⑻ 如何理解python中的main函數

這個腳本被執行的時候,__name__ 值就是 __main__ ,才會執行 main()函數 如果這個腳本是被 import 的話,__name__的值不一樣。main()函數就不會被調用。 這個句子用來寫既能直接運行,又能給其他python程序import,提供庫調用的腳本

閱讀全文

與pythonmain函數參數相關的資料

熱點內容
erp是什麼伺服器 瀏覽:182
python中tmp 瀏覽:19
說明wpf加密過程 瀏覽:142
java讀取list 瀏覽:702
iis7gzip壓縮 瀏覽:39
有什麼安卓機打吃雞好 瀏覽:597
三星u盤加密狗 瀏覽:473
php函數的返回值嗎 瀏覽:586
國企穩定程序員 瀏覽:328
編程貓如何使用教程視頻 瀏覽:218
安卓遠端網頁如何打日誌 瀏覽:218
壓縮flash大小 瀏覽:993
解壓的玩具教程可愛版 瀏覽:366
哪個求職app比較靠譜 瀏覽:888
java的讀法 瀏覽:59
nod32區域網伺服器地址 瀏覽:1003
數碼科技解壓 瀏覽:236
新網的雲伺服器管理界面復雜嗎 瀏覽:367
無人聲解壓強迫症視頻 瀏覽:573
計算機編譯運行 瀏覽:640