『壹』 python 定義函數
params=(5,)*2
#params=(5,5)
power(*params)
#實際上就是pow(5,5)=3125
『貳』 python函數定義
『叄』 python中自定義一個函數,讀取一個文件,替換指定字元串,將替換後的內容寫入新的文件
重新提問,記得帶著你的積分一起
『肆』 python中在函數後面有一個小括弧和一個中括弧是什麼意思
函數帶小括弧表示執行這個函數,函數如果帶參數的話也會輸入到這個小括弧里,如果後面還有一個
方括弧
的話,說明這個函數的返回是一個可迭代對象,比如字元串,
元組
,列表,集合等之類的數據。
tf.shape(features["image"])[0],後面的
中括弧
表示取返回結果的索引值為0的值
all_logits[sup_bsz
:
sup_bsz
+
aug_bsz]
是切片操作
『伍』 解析Python函數變數如何使用
剛學用Python的時候,特別是看一些庫的源碼時,經常會看到func(*args, **kwargs)這樣的函數定義,這個*和**讓人有點費解。其實只要把函數參數定義搞清楚了,就不難理解了。
先說說函數定義,我們都知道,下面的代碼定義了一個函數funcA
def funcA():
pass
顯然,函數funcA沒有參數(同時啥也不幹:D)。
下面這個函數funcB就有兩個參數了,
def funcB(a, b):
print a
print b
調用的時候,我們需要使用函數名,加上圓括弧擴起來的參數列表,比如 funcB(100, 99),執行結果是:
100
99
很明顯,參數的順序和個數要和函數定義中一致,如果執行funcB(100),Python會報錯的:
TypeError: funcB() takes exactly 2 arguments (1 given)
我們可以在函數定義中使用參數默認值,比如
def funcC(a, b=0):
print a
print b
在函數funcC的定義中,參數b有默認值,是一個可選參數,如果我們調用funcC(100),b會自動賦值為0。
OK,目前為止,我們要定義一個函數的時候,必須要預先定義這個函數需要多少個參數(或者說可以接受多少個參數)。一般情況下這是沒問題的,但是也有在定義函數的時候,不能知道參數個數的情況(想一想C語言里的printf函數),在Python里,帶*的參數就是用來接受可變數量參數的。看一個例子
def funcD(a, b, *c):
print a
print b
print "length of c is: %d " % len(c)
print c
調用funcD(1, 2, 3, 4, 5, 6)結果是
1
2
length of c is: 4
(3, 4, 5, 6)
我們看到,前面兩個參數被a、b接受了,剩下的4個參數,全部被c接受了,c在這里是一個tuple。我們在調用funcD的時候,至少要傳遞2個參數,2個以上的參數,都放到c里了,如果只有兩個參數,那麼c就是一個empty tuple。
好了,一顆星我們弄清楚了,下面輪到兩顆星。
上面的例子里,調用函數的時候,傳遞的參數都是根據位置來跟函數定義里的參數表匹配的,比如funcB(100, 99)和funcB(99, 100)的執行結果是不一樣的。在Python里,還支持一種用關鍵字參數(keyword argument)調用函數的辦法,也就是在調用函數的時候,明確指定參數值付給那個形參。比如還是上面的funcB(a, b),我們通過這兩種方式調用
funcB(a=100, b=99)
和
funcB(b=99, a=100)
結果跟funcB(100, 99)都是一樣的,因為我們在使用關鍵字參數調用的時候,指定了把100賦值給a,99賦值給b。也就是說,關鍵字參數可以讓我們在調用函數的時候打亂參數傳遞的順序!
另外,在函數調用中,可以混合使用基於位置匹配的參數和關鍵字參數,前題是先給出固定位置的參數,比如
def funcE(a, b, c):
print a
print b
print c
調用funcE(100, 99, 98)和調用funcE(100, c=98, b=99)的結果是一樣的。
好了,經過以上鋪墊,兩顆星總算可以出場了:
如果一個函數定義中的最後一個形參有 ** (雙星號)前綴,所有正常形參之外的其他的關鍵字參數都將被放置在一個字典中傳遞給函數,比如:
def funcF(a, **b):
print a
for x in b:
print x + ": " + str(b[x])
調用funcF(100, c='你好', b=200),執行結果
100
c: 你好
b: 200
大家可以看到,b是一個dict對象實例,它接受了關鍵字參數b和c。
『陸』 Python編寫函數list_in_dirl(),實現列舉指定目錄和文件的功能
摘要 親,您好,您的問題已經收到了,這邊正在為您全力解答,請您耐心等待!
『柒』 python中的函數必須明確指出返回類型
python沒有靜態類型,因此不需要也不可以指定函數的返回類型。
依據業務邏輯的需要,一個函數可以返回任何值,也可以什麼都不返回。
比如:
def f1():return 1
def f2():return 'ok'
def f3():return [1,2,'good']
『捌』 python 截取指定字元前後的所有字元的函數
可以參考下面的代碼:
#!/usr/bin/python
# encoding: utf-8
# filename: .py
ln = "4564612131856+654654654654"
print ln.split("+")
#~ Result:
#~ >python -u ".py"
#~ ['4564612131856', '654654654654']
#~ >Exit code: 0 Time: 0.052
Python在設計上堅持了清晰劃一的風格,這使得Python成為一門易讀、易維護,並且被大量用戶所歡迎的、用途廣泛的語言,設計者開發時總的指導思想是,對於一個特定的問題,只要有一種最好的方法來解決就好了。
Python本身被設計為可擴充的。並非所有的特性和功能都集成到語言核心。Python提供了豐富的API和工具,以便程序員能夠輕松地使用C語言、C++、Cython來編寫擴充模塊。
Python是完全面向對象的語言。函數、模塊、數字、字元串都是對象。並且完全支持繼承、重載、派生、多繼承,有益於增強源代碼的復用性。
(8)python函數後邊指定擴展閱讀:
python參考函數
vars(obj) 返回一個object的name space。用dictionary表示
locals() 返回一個局部name space,用dictionary表示
globals() 返回一個全局name space,用dictionary表示
type(obj) 查看一個obj的類型
isinstance(obj,cls) 查看obj是不是cls的instance
issubclass(subcls,supcls) 查看subcls是不是supcls的子類