python函数的定义必须在程序的开头_Python之函数基础
1、函數的定義與調用
函數從大方針上考慮總共分為兩種:一種是內置函數,另一種是自定義函數。今天主要講的是自定義函數。
s = '金老板小護士'#len(s)
def my_len(): #自定義函數
i= 0
for k ins:
i+= 1print(i)
length=my_len()
print(length)
此函數是為了計算字符串 's' 的長度。分析此函數的格式:
首先定義函數是def,這個是必須的,后面空一格,再寫函數名稱,定義函數名稱和定義變量的規范一樣,后面是冒號。
其實除了def這一行和后面的縮進,其他的好像就是正常的執行代碼。我們來執行一下,哦,好像啥也沒發生。
剛剛我們已經說過,這是把代碼裝起來的過程。你現在只會往里裝,還不會往出拿。那么應該怎么往出拿呢?我來告訴大家:
mylen()
是不是很簡單?是不是似曾相識?這就是代碼取出來的過程。剛剛我們就寫了一個函數,并且成功調用了它。
函數的調用是用mylen(),直接在函數代碼后面寫上變量名加上(),就可以調用函數了。
總結:
定義:def關鍵詞開頭,空格之后接函數名稱和圓括號(),最后還有一個":"。
def 是固定的,不能變。
空格 為了將def關鍵字和函數名分開,必須空格。
函數名:函數名只能包含字符串、下劃線和數字且不能以數字開頭。雖然函數名可以隨便起,但我們給函數起名字還是要盡量簡短,并能表達函數功能
括號:是必須加的!
注釋:每一個函數都應該對功能和參數進行相應的說明,應該寫在函數下面第一行。以增強代碼的可讀性。
調用:就是?函數名() 要記得加上括號。
2、函數的返回值
函數的返回值,關鍵字是? return
返回值也就是return的作用是,有兩個作用
一、可以返回函數值
二、可以結束一個函數的繼續。
要研究返回值,我們還要知道返回值有幾種情況:分別是沒有返回值、返回一個值、返回多個值
返回值的3種情況
沒有返回值 —— 返回None
不寫return
只寫return:結束一個函數的繼續
return None —— 不常用
返回1個值
可以返回任何數據類型
只要返回就可以接收到
如果在一個程序中有多個return,那么只執行第一個
返回多個值
用多個變量接收:有多少返回值就用多少變量接收
用一個變量接收: 得到的是一個元組
沒有返回值
不寫return的情況下,會默認返回一個None
#函數定義
def mylen():"""計算s1的長度"""s1= "hello world"length= 0
for i ins1:
length= length+1print(length)
#函數調用
str_len=mylen()
#因為沒有返回值,此時的str_len為None
print('str_len : %s'%str_len)
不寫return
只寫return,后面不寫其他內容,也會返回None,有的同學會奇怪,既然沒有要返回的值,完全可以不寫return,為什么還要寫個return呢?這里我們要說一下return的其他用法,
就是一旦遇到return,結束整個函數。
def ret_demo():
print(111)returnprint(222)
ret=ret_demo()
print(ret)
只寫return
return None:和上面的兩種情況一樣,我們一般不這樣寫。
def ret_demo():
print(111)returnNone
print(222)
ret=ret_demo()
print(ret)return None
返回一個值
只需在return后面寫上要返回的內容即可。
#函數定義
def mylen():"""計算s1的長度"""s1= "hello world"length= 0
for i ins1:
length= length+1
returnlength
#函數調用
str_len=mylen()
print('str_len : %s'%str_len)
返回一個值
注意:return和返回值之間要有空格,可以返回任意數據類型的值
返回多個值
可以返回任意多個、任意數據類型的值
def ret_demo1():'''返回多個值'''
return 1,2,3,4def ret_demo2():'''返回多個任意類型的值'''
return 1,['a','b'],3,4ret1=ret_demo1()
print(ret1)
ret2=ret_demo2()
print(ret2)
返回多個值
返回的多個值會被組織成元組被返回,也可以用多個值來接收
def ret_demo2():return 1,['a','b'],3,4#返回多個值,用一個變量接收
ret2=ret_demo2()
print(ret2)
#返回多個值,用多個變量接收
a,b,c,d=ret_demo2()
print(a,b,c,d)
#用多個值接收返回值:返回幾個值,就用幾個變量接收
a,b,c,d=ret_demo2()
print(a,b,c,d)
多個返回值的接收
上面設置的函數只能單一的適用于一種特定的情況,現在如果想要讓我們的函數能夠適用于所有的變量,就要設置參數了。
#函數定義
def mylen(s1):"""計算s1的長度"""length= 0
for i ins1:
length= length+1
returnlength
#函數調用
str_len= mylen("hello world")
print('str_len : %s'%str_len)
帶參數的函數
mylen函數要計算的字符串是誰,這個過程就叫做 傳遞參數,簡稱傳參,我們調用函數時傳遞的這個“hello world”和定義函數時的s1就是參數。
實際參數(實參)和形式參數(形參):
實參:我們調用函數時,在變量后面的()里加入的參數就是實際參數,簡稱實參;
形參:我們定義函數時,在變量后面的()里加入的參數就是形式參數,簡稱形參。
傳遞多個參數
參數可以傳遞多個,多個參數之間用逗號分割。
def mymax(x,y):
the_max= x if x > y elseyreturnthe_max
ma= mymax(10,20)
print(ma)
View Code
1 defmymax(x,y):2 the_max = x if x > y elsey3 returnthe_max4
5 ma = mymax(10,20)6 print(ma)
View Code
defmymax(x,y):
the_max= x if x > y elseyreturnthe_max
ma= mymax(10,20)print(ma)
參數
沒有參數
定義函數和調用函數時括號里都不寫內容
有一個參數
傳什么就是什么
有多個參數
位置參數,按照順序對應
站在實參角度
1.按照位置傳值
defmymax(x,y):#此時x=10,y=20
the_max = x if x > y elseyreturnthe_max
ma= mymax(10,20)print(ma)
按照位置傳參
2.按照關鍵字傳值
defmymax(x,y):#此時x = 20,y = 10
print(x,y)
the_max= x if x > y elseyreturnthe_max
ma= mymax(y = 10,x = 20)print(ma)
按照關鍵字傳參
3.位置、關鍵字形式混著用
defmymax(x,y):#此時x = 10,y = 20
print(x,y)
the_max= x if x > y elseyreturnthe_max
ma= mymax(10,y = 20)print(ma)
位置、關鍵字混用傳參
正確用法
問題一:位置參數必須在關鍵字參數的前面
問題二:對于一個形參只能賦值一次
總結:
站在實參的角度上:
按照位置傳參
按照關鍵字傳參
混著用可以:但是 必須先按照位置傳參,再按照關鍵字傳參數
不能給同一個變量傳多個值
站在形參角度
位置參數必須傳值
defmymax(x,y):#此時x = 10,y = 20
print(x,y)
the_max= x if x > y elseyreturnthe_max#調用mymax不傳遞參數
ma =mymax()print(ma)#結果
TypeError: mymax() missing 2 required positional arguments: 'x' and 'y'位置參數必須傳參
默認參數
1.正常使用
使用方法
為什么要有默認參數:將變化比較小的值設置成默認參數
2.默認參數的定義
def stu_info(name,sex = "male"):"""打印學生信息函數,由于班中大部分學生都是男生,
所以設置默認參數sex的默認值為'male'"""
print(name,sex)
stu_info('alex')
stu_info('eva','female')
默認參數
總結:
站在形參的角度上
位置參數:必須傳,且有幾個參數就傳幾個值
默認參數: 可以不傳,如果不傳就是用默認的參數,如果傳了就用傳的
動態參數
按位置傳值多余的參數都由args統一接收,保存成一個元組的形式
def mysum(*args):
the_sum=0for i inargs:
the_sum+=ireturnthe_sum
the_sum= mysum(1,2,3,4)print(the_sum)*args求和函數應用
def stu_info(**kwargs):print(kwargs)print(kwargs['name'],kwargs['sex'])
stu_info(name= 'alex',sex = 'male')
動態參數有兩種:可以接受任意個參數
*args : 接收的是按照位置傳參的值,組織成一個元組
**kwargs: 接受的是按照關鍵字傳參的值,組織成一個字典
args必須在kwargs之前
重要總結:
只有調用函數的時候
按照位置傳 : 直接寫參數的值
按照關鍵字: 關鍵字 = 值
定義函數的時候:
位置參數 : 直接定義參數
默認參數,關鍵字參數 :參數名 = '默認的值'
動態參數 : 可以接受任意多個參數
參數名之前加*,習慣參數名args,
參數名之前加**,習慣參數名kwargs
順序:位置參數, *args,? ?默認參數,??? **kwargs
函數的注釋
def func():
''' 這個函數實現了什么功能
參數1:
參數2:
:return: 是字符串或者列表的長度
'''
pass
總結
以上是生活随笔為你收集整理的python函数的定义必须在程序的开头_Python之函数基础的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux怎么退出vim编辑模式_Lin
- 下一篇: python怎么new对象_Python