Python之函式簡析(一)

qq_32154655發表於2017-11-01
Python之函式
函式分為無參函式和有參函式

#!/usr/bin/env python
# -*- coding:utf8 -*-
# @Time     : 2017/11/1 9:01
# @Author   : hantong
# @File     : def.py
#函式分為無參函式和有參函式
#無參函式形如如下:

def hello():
    print "Hello World"
hello()

#有參函式形如如下:
def fun(x, y):
    print(x)
    print(y)
    return x+y #return只能返回一次,只要執行return函式就終止了
sum = fun(10,3)
print(sum)

#總結:def 是固定語句,後跟函式名稱(函式名稱可以任意取值,但不能重複&同名),如上面的hello,fun都是函式名稱
# 函式名稱後面必須跟上(),括號後面是:,注意:()裡面根據自己的需要新增引數

def funcA(a,b=0):
    print(a)
    print(b)
funcA(1)
funcA(1,20)
#總結:如果實參傳入資料的時候,已經有預設值(上例中b=0),輸出傳入的值,如果沒有傳入值,則輸出預設值

#當引數為tuple時
def funcD(a,b,*c):
    print(a)
    print(b)
    print(c)
tuple = ('hello','world')
funcD(1,2,*tuple)
#tuple前面的*號是解包
funcD(1,2,3,4,5,6)

#當引數為dict時
def funcF(a,**b):
    print(a)
    print(b)
dict = {'hi':'hello','wo':'world'}
funcF(100,**dict)
#dict前面加上**是解包
funcF(100,x="hello",y="你好")

匿名函式lamb

匿名函式

python 使用 lambda 來建立匿名函式。

  • lambda只是一個表示式,函式體比def簡單很多。
  • lambda的主體是一個表示式,而不是一個程式碼塊。僅僅能在lambda表示式中封裝有限的邏輯進去。
  • lambda函式擁有自己的名稱空間,且不能訪問自有引數列表之外或全域性名稱空間裡的引數。
  • 雖然lambda函式看起來只能寫一行,卻不等同於C或C++的行內函數,後者的目的是呼叫小函式時不佔用棧記憶體從而增加執行效率。

語法

lambda函式的語法只包含一個語句,如下:

lambda [arg1 [,arg2,.....argn]]:expression

例項:

#!/usr/bin/env python
# -*- coding:utf8 -*-
# @Time     : 2018/4/13 14:19
# @Author   : hantong
# @File     : 20180413_def.py

g = lambda x : x**2
print(g(2))

sum = lambda arg1, arg2, arg3 : arg1+arg2+arg3;
print("相加後的值為: ",sum(10,20,30))
執行結果:

X的平方是:  4
相加後的值為:  60



相關文章