Ⅰ 怎樣使用python將參數
Python 傳參數可以理解為 C 的 const 指針(your_type* const your_variable),它所指向的對象可以被修改產生副作用,但變數本身不能修改指向其他對象。這個和 C++ 的 reference 差不多。
所以如果一定要產生 C 的修改指針指向其他對象的效果,用 list、dict 或其他自定義的 mutable 對象包裝是一個辦法,但我認為這樣是一種不良實踐。在 C 語言中用參數輸出結果有非常多的理由:
C 語言沒有 tuple,不能返回多值,除非聲明一個 struct 類型。這種情況下劃分 in 參數和 out 參數成為一種慣例
C 語言沒有異常機制,返回值一般要保留給 errno
但這些情況在 Python 中都是不存在的,所以使用非慣例用法會讓人很「驚訝」,然後這種驚訝就是陷阱了 = =~
Ⅱ Python方法的幾種常見參數類型
無默認值參數(關鍵字參數):
defmyfun(a):
print(a)
這是參數的最簡單形式。這個a就是無默認值參數。在調用函數時必需為無默認值參數指定值。
無默認值參數可以通過兩種方式來指定值:
#按參數定義順序不指名傳遞值
myfun('/src/image')
#無視定義順序,通過關鍵字指定值
myfun(a='/src/image')
無默認值參數在函數內部使用關鍵字作為變數名來訪問
無默認值參數可以有多個,也是一些其它參數類型的基礎。
默認值參數:
如果在定義時為參數指定一個默認值,那麼,這個參數就可以在調用時不指定值:
defmyfun(a=''):
print(a)
#不為a指定值
myfun()
#按定義順序為a指定值
myfun('/src/lib')
#通過關鍵字為a指定值
myfun(a='/src/lib')
在定義時,所有默認值參數只能出現在所有無默認值參數之後,也就是說,在函數的定義中,要先定義無默認值參數,再定義默認值參數。
不定長參數:
在參數名之前添加一個*號,則該參數稱為不定長參數。一個函數只可以有一個不定長參數。不定長參數的定義位置沒有限制,它可以定義在無默認值參數之間,也可以定義在默認值參數之後,或者它們之間的任何一個位置。
在調用時,不定長參數之後定義的無前兩種類型的參數就只能使用關鍵字來指定值了。
不定長參數在函數內部被處理為一個tuple。
def_max(*e,base=9):
print('called"_max":')
print('e:',e)
print('base:',base)
#只向不定長參數傳遞了值
#輸出:
#called"_max":
#e:(3,4,5)
#base:9
_max(3,4,5)
#也向默認值參數base傳遞了值
#輸出:
#called"_max":
#e:(3,4)
#base:5
_max(3,4,base=5)
#直接通過一個元組傳遞不定長參數的值
#輸出:
#called"_max":
#e:(3,4)
#base:5
p=(3,4)
_max(*p,base=5)
#使用混合方式傳遞不定長參數
#輸出:
#called"_max":
#e:(3,4,5,6,7)
#base:10
p1=(3,4)
p2=(6,7)
_max(*p1,5,*p2,base=10)
調用函數時如果沒有為不定長參數指定值,將導入一個空元組。
不定長關鍵字參數:
不定長關鍵字參數使用兩個星號作為前綴與其它類型的參數區分,它在函數內被導入為一個字典。調用時需要為不定長關鍵字參數給出約定的關鍵字名,賦值形式如同無默認值參數。
一般情況下,不定長參數是作為最後一個參數來定義。
defmyfun(**kw):
print(kw)
myfun(base=1,home='aaaa')
以上只是基本的調用方式,有些時候,可以有更有趣的調用方式,例如定義了一個既含無默認值參數也含默認值參數的函數:
defiter_dir(homedir,exts='*',includesubdir=False,monoinfile=False,
titlere='^[^^].*',textengine=default_textengine,
encode=None):
調用時也可以用這樣的方式來傳遞值:
kwgs={'homedir':'C:/Users/hunte/Documents/yun/阿瑟·C·克拉克',
'exts':'txt',
'includesubdir':True}
myiter=iter_dir(**kwgs)
forfileinmyiter:
pass
Ⅲ Python怎麼讓編譯器推斷出參數類型
當然可以,如果你用pycharm的話,就在敲出OBJ之前加一行
assert isinstance(obj, 你定義的類名)
之後你輸入obj.就出來類方法啥的了
Ⅳ python 字元串中獲取參數,字元串表達式該如何處理
Python3.6.1(default,Sep72017,16:36:03)
[GCC6.3.020170406]onlinux
Type"help","right","credits"or"license"formoreinformation.
>>>d={'a':range(0,3)}
>>>3+4*d['a']
Traceback(mostrecentcalllast):
File"<stdin>",line1,in<mole>
TypeError:unsupportedoperandtype(s)for*:'int'and'range'
>>>