[英]how to import __future__ for keyword-only argument of python 3.0?
python2.6中的以下代碼拋出語法錯誤
>>> def f(a,*args,c):
File "<stdin>", line 1
def f(a,*args,c):
^
SyntaxError: invalid syntax
但是這種語法在python3.0中是有效的。 我想知道我應該在我的解釋器中導入什么才能使其工作。 即。 from import __future__ ????
為了導入print function
3.0,我會from __future__ import print_function
同樣,這種定義在2.6中無效
def f(a,*b,c=5,**kwargs):
雖然它在3.0中是合法的
Python的3編譯器的這一功能還沒有被移植到Python 2.x的
from __future__ import
開關沒有任何魔法來啟用它,您唯一的選擇是升級到Python 3.x.
您的第二個功能可以定義為:
def (a, *b, **kwargs):
c = kwargs.pop('c', 5)
兼容Python 2。
PEP 3102中討論了新語法,它在Python 2.x中確實無效。
但是,您可以手動從**kwargs
獲取關鍵字參數:
def f(a, *b, **kwargs):
if 'c' in kwargs:
pass
另一種方法是升級到Python 3.x.
另一種模仿僅限關鍵字參數的方法是:
def f(a, *args, **kwds):
b = kwds.get('b', 42) # 42 being the default for b
如果你不想確保沒有傳遞未經請求的參數,你可以使用pop
代替:
def f(a, *args, **kwds):
b = kwds.pop('b', 42)
assert not kwds # after we've popped all keywords arguments kwds should be empty
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.