『壹』 python如何定義一個函數
沒注意 把x y改成 a b 應該滿足題目了
def divideExactly(x, y):
list1 = []
for i in range(x, y):
if i % 7 == 0:
if i % 5 != 0:
list1.append(i)
l = ','.join(str(i) for i in list1)
print(l)
divideExactly(10, 100)
『貳』 python里函數的定義
定義:
def 函數名(形參1,形參2='初始定義的內容'):
函數中執行的內容
調用:
函數名(實參1)或函數名(形參2=實參2,形參1=實參1)或函數名(實參1,實參2)
『叄』 Python函數的定義(構造)和調用
這里來給大家演示一下,函數的定義或構造,並調用函數來實現封裝後的效果。
首先我們來看看想實現下面的這個效果,如果不使用函數應該怎麼實現。
以上兩種返回結果都是1-9這幾個數字。
以上兩種方法,第一種代碼重復率太高,代碼美觀效果太差,雖然能實現效果,但是因為數量比較少,還能手工打出來這幾行代碼,如果是列印1-100000就很難實現了。這時候for循環還是可以實現的,但是for循環只能實現類似的數字和變數循環,無法進行復雜的功能開發。鑒於此,函數這個概念就被python引入了,下面先來看看函數是怎麼實現上面的效果的,還是兩種方法。
這時候如果想實現上面的列印結果就直接使用函數名+小括弧調用函數就可以了,這種類型的語法,不僅可以反復使用,而且封裝後的代碼更美觀。
『肆』 在python中定義函數
涉及到狀態保存,可以使用函子(書上這么翻譯的,不曉得其他人是不是也這樣叫),給你個例子,你比對著改。如果不懂,自己再延這個方向去查看資料。
classStrip:
def__init__(self,characters):#初始化,將需要保留的狀態信息存起來
self.characters=characters
def__call__(self,string):#創建的函子被使用時,自動調用__call__
returnstring.strip(self.characters)
#下面是使用方法,兩個語句是密切銜接的。
strip_punctution=Strip(',;:.!?')#字元串參數將被__init__吃進去,並且保留在class中,
#相當於一種狀態保存的方法,在你的例子中,你可以將用戶表達式通過這種方式保存起來
strip_punctution('helloworld!')#return'helloworld',他的功能是剝離characters
#字元串中出現的字元,此處把感嘆號去掉了,
#這就是函子典型的使用方法,class中的__call__函數被自動調用,在你的
#例子中,你可以通過這樣的方式調用函數,就不用每次重新輸入表達式了。
『伍』 python中函數定義
函數定義與調用:
1) >>> def 函數名(形參1,形參2): # 定義
... 函數體
函數名(實參1,實參2) #調用
『陸』 Python報錯typeError: 'tuple' object is not callable
環境:python2.7
網路下,只有幾個例子,有個說是某個函數被重新定義了,導致出問題。
我仔細看了下我的錯誤:
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/eventlet-0.14.0-py2.7.egg/eventlet/hubs/hub.py", line 346, in fire_timers
timer()
File "/usr/local/lib/python2.7/dist-packages/eventlet-0.14.0-py2.7.egg/eventlet/hubs/timer.py", line 56, in __call__
cb(*args, **kw)
File "/usr/local/lib/python2.7/dist-packages/eventlet-0.14.0-py2.7.egg/eventlet/greenthread.py", line 194, in main
result = function(*args, **kwargs)
TypeError: 'tuple' object is not callable
然後通過一步步查詢找到出錯語句:
eventlet.spawn(utils.command(cmd))
在自定義的utils.command中,有調用subprocess.Popen和eventlet.sleep,可能是其中哪個出問題了
我因為對結果要求不高,直接將代碼改為:
utils.command(cmd)
然後不再出錯。
沒有進一步查看原先的錯處,個人考慮是某個函數重定義導致錯誤,不過網上也有代碼不規范出錯的