本文是《搞定python》系列專欄的第四篇,通過代碼演示列python自定義函數、lambda和模塊的用法。本文學習完成后,python的基礎知識就完了。后面會學習面向對象的內容。
1、自定義函數
# 測試python自定義函數# 有參數,沒有返回值
def say_hello(name):print("hello: " + name)# 沒參數有返回值
def get_age():a = 12a += 1return a# 多個形參,返回一個元組
def get_user_info(name, birthday, sex):return name, birthday, sex # 也可以返回字典,用 dict1 = {"name":name}.print("---test_function----")
say_hello("張三")age = get_age()
print("age = " + str(get_age()))user_info = get_user_info("李四", '2020-01-01', '女')
print("name=%s, birthday=%s, sex=%s" %(user_info[0], user_info[1], user_info[2])) #獲取元組的元素
這就是自定義函數的應用。最后一個函數,get_user_info()相對比較復雜,咱們在實際中一般也不會這么寫,一般直接傳一個對象。這里就是為了演示用法而已。下面用可變參數改一下:
# 在定義一個函數,仔細看,最后一個參數名帶了一個‘*’,這就是可變參數
def get_user_info3(name, *other_info):return name, other_infoprint("---可變參數測試---")
user_info = get_user_info3("李子")
print("user_info = {%s}" %(user_info[0]) #返回一個元組,因為other_info為空,就不打印了user_info = get_user_info3("李子", "2009-01-01")
print("user_info = {%s, %s}" %(user_info[0], user_info[1][0])) #返回一個元組,other_info是元組里的元組
函數就說這么多了,下面看看lambda的寫法。
2、lambda表達式
大家看到了,上面的自定義函數中,就是簡單的返回也必須完整的寫出函數結構。lambda就是為簡化而來的。下面看看寫法:
# 測試lambda表達式def func1(a, b):return a + b# 正常就是這么寫的,太麻煩了!!!
print("---普通函數調用:----")
print("a + b = %d" %(func1(2, 6)))# -----------------------------------
# lambda的寫法
print("\n---lambda寫法 1---")
add = lambda a, b: a + b # 冒號前是定義參數,冒號后是參數運算的表達式 # 1
print("a + b = %d" %(add(2, 6)))# 再簡化一下
print("a + b = %d" %((lambda a, b: a+b)(2, 6))) # 2# 來的別的
print("\n---寫個乘法---")
print("a * b = %d" %(lambda a,b:a * b)(2, 5))
總結一下:lambda相對簡單,不像java中要是匿名內部類。python中是個簡單函數就行,注意==:簡單函數==,別太長,太長了就不簡單了。
至此,函數的定義和調用就說完了。下面說說模塊。
3、模塊
模塊就相當于你用java寫了一個類,別人要怎么用呢?最基本就是把類拷給他,或者打成jar包把jar給他,還能防止修改。python中的模塊就是類似的功能。
還是上面的函數,咱們單獨寫到一個文件中,在另一個python文件中引用。
第一個文件:add.py
# add.py就這兩行代碼
# 一個公共的模塊
def get_user_info(name, birthday, sex):return name, birthday, sex
第二個文件:
# 引入add模塊,并調用add的方法
import add # add是模塊的文件名print(add.get_user_info("zhangsan", "2020-02-02", "男")) #調用add定義的方法
好了,今天就說這么多了。
就到這里啦。
//~~