1. 程式人生 > >python筆記 函式與引數

python筆記 函式與引數

一個比較大的工程中的思想就是模組化
定義:
程式碼的一種組織形式,一個函式一般完成一項特定的功能
0000000000000000分隔符00000000000000000000
函式的使用:
函式需要先定義,使用函式,俗稱呼叫
0000000000000000分隔符00000000000000000000
定義一個函式:

def func():
	print("我是一個函式")
	print("我要完成一定的功能")
	print("我要結束了")

1.def關鍵字,後面跟一個空格
2.函式名,自己定義,起名要遵循命名規則,約定俗成,大駝峰命名只給類用
3.後面的括號和冒號不能省略,括號內可以有引數
4.函式內所有程式碼縮排
一個函式必須有相同的縮排,如果下一行沒有縮排 則表示這個函式已經結束
0000000000000000分隔符00000000000000000000
函式的呼叫:
直接函式名後面跟括號就好了

func()

0000000000000000分隔符00000000000000000000
函式的引數和返回值
引數:負責給函式傳遞一些必要的資料或者資訊
形參和實參
形參基本上就是個佔位符
實參,在呼叫函式的時候輸入的值
在這裡插入圖片描述
返回值:函式的執行結果
使用return關鍵字
如果沒有return,預設返回一個None
函式一旦執行return語句,則無條件返回
在這裡插入圖片描述
return案例2:
有兩個return,第一個return直接結束此函式在這裡插入圖片描述

查詢函式幫助文件:
help(print)
這個函式可以檢視print函式的說明
print(value,end=" ") 使用空格分割列印結果

九九乘法表:
在這裡插入圖片描述

#3#如果能用for迴圈優先用for

引數

http://www.cnblogs.com/bingabcd/p/6671368.html
【參考資料】
python參考資料:headfirst python—>零基礎入門學python(小甲魚)—>習題—>後期可以看一下騰訊公開課
引數分類:
普通引數
預設引數
關鍵字引數
收集引數
#普通引數
參見上面的各種例子,定義的時候直接定義變數明,呼叫的時候把變數或者值放入指定位置
def 函式名 (引數1,引數2 , 。。。。。。):
函式體
0000000000000000分隔符00000000000000000000
呼叫:
函式名(value1 , value2 , 。。。。。。)
呼叫的時候,具體值參考的是位置,按位置賦值

#預設引數
形參帶有預設值,呼叫的時候,如果沒有對相應形參賦值,則使用預設值
預設引數的寫法:
def func_name(p1=v1, p2=v2, …):
func_block
呼叫1
func_name()
呼叫2
value1=100
value2=200
func_name(value1,value2)

#預設引數示例

在這裡插入圖片描述

#關鍵字引數
語法:
def func(p1=v1, p2=v2 …):
func_body

呼叫函式:
func(p1=value1, p2=value2, ......)
比較麻煩,但也有好處:
	不容易混淆,一般實參和形參只是按照位置一一對應即可,容易出錯
	使用關鍵字引數,可以不考慮引數的位置
#關鍵字引數程式碼
以前的:
普通引數,只按照位置傳遞
	def stu(name, age, addr):
		print("I am a student")
		print("我叫{0},我今年{1}歲了,我住{2}").format(name, age, addr))
	n = "jingjing"
	a = 18
	addr = "我家"
	stu(n, a, addr)

寫入關鍵字引數:

	def stu_key(name="No name", age=0, addr="No addr"):
		print("I am a student")
		print("我叫{0},我今年{1}歲了,我住{2}").format(name, age, addr))
	n = "jingjing"
	a = 18
	addr = "我家"
	stu_key(name=n, age=a, addr= addr)
	stu_key(age=a, name=n, addr= addr)

#收集引數
把沒有位置,不能和定義式的引數位置相對應的引數,放入一個特定的資料結構中
語法:
def func(*args):
func_body
可以按照list使用方式訪問args得到傳入的引數
呼叫:
func(p1, p2, p3, …)

引數名args不是必須這麼寫,一般推薦這麼寫(約定俗成)
引數名args前需要有星號*
收集引數可以和其他引數共存
#收集引數程式碼
#函式模擬一個學生進行自我介紹,但具體內容不清楚
#args把他看作一個list 列表
def stu( *args):
	print("Hello 大家好,我自我介紹一下,簡單說兩句:")
	#type函式的作用是檢測變數的型別
	print(type(args))
	for item in args:
		print(item)

stu("liuying", 18, "北京通州區", "喜歡王曉靜", "single")
stu("周大神")

在這裡插入圖片描述
執行結果,如果是空的,沒有實參,也可以執行
說明手機引數可以不帶任何實參呼叫,此時手機引數為空tuple
收集引數如果使用關鍵字引數呼叫,會出現問題
在這裡插入圖片描述
##收集引數之關鍵字收集引數
把關鍵字引數按字典格式存入收集引數
語法:
def func( ** kwargs)
func_body

呼叫:
func(p1=v1, p2=v2, p3=v3, .............)

kwargs一般約定俗成
呼叫的時候,把多餘的關鍵字引數放入kwargs
訪問kwargs需要按字典個事訪問
#收集引數案例:

#自我介紹
#呼叫的時候需要使用關鍵字引數呼叫
def stu( **kwargs):
	#在函式體內對於kwargs的使用不用帶星號
	print("Hello 大家好,就先自我介紹一下")
	print(type(kwargs))
	#對於字典的訪問,python2和python3有區別
	#下面是python3訪問字典的方法:
	for k,v in kwargs.items():
		print(k, "---", v)

stu(name="liuying", age=19, addr="北京大通州區", lover="王曉靜", work="Teacher")
print("*************************")
stu(name="周大神")
#字串的乘法:
print("*" * 20)

執行結果:
在這裡插入圖片描述

#收集引數可以為空,執行結果正常顯示,無影響:
在這裡插入圖片描述
看到p7 50:36