1.什麼是函式
1)概念
函式就是對實現某一特定功能的**段的封裝(機器)
2)分類
系統函式 - 系統已將定義了,程式設計師可以直接使用的函式,比如:print, input, type, ord, chr, bin, len, id等(別人造好的機器)
自定義函式 - 程式設計師自己定義使用的函式(自己造機器)
2.函式的定義
語法:def 函式名(形參列表):
函式說明文件
函式體說明:
def - python定義函式的關鍵字,固定寫法
函式名 - 程式設計師自己命名
識別符號,不能是關鍵字(要求)
所有字母都小寫,多個單詞用下劃線隔開
不能用系統提供的函式名,類名
見名知義(看到函式名大概知道函式的功能是什麼)
(): - 固定寫法
形參列表 - 格式:變數名1, 變數名2, 變數名3, …(變數可以是沒有定義過的變數)
形參的作用是將函式外面的資料傳遞到函式裡面
函式說明文件 - 和def保持乙個縮排的三個雙引號引起來的注釋(說明書)
函式體 - 和def保持乙個縮排的一條或者多條語句,實現函式功能的一條或者多條語句
注意:函式在定義的時候不會執行函式體
初學者定義函式的步驟
第一步:確定函式的功能
第二步:根據函式的功能確定函式名
第三步:確定函式的引數(看實現函式的功能需不需要額外的資料,需要幾個)
第四步:實現函式功能
(第五步:確定函式返回值)
第六步:寫函式說明文件
需求:定義乙個函式實現求任意兩個數的和的功能·
def
num_sum
(num1, num2)
:
求兩個數的和(功能說明部分)
:param num1:第乙個數
:param num2:第二個數
:return
:none(返回值說明)
print
(num1 + num2)
練習1:定義乙個函式,列印指定字串中大寫字母的個數
def
str_count
(string)
:
統計指定字串中大寫字母的個數
:param str1: 被統計的字串
:return
:none
count1 =
0for x in string:
if'a'
<= x <=
'z':
count1 +=
1print
(f'中大寫字母的個數:'
)
3.函式的呼叫(使用機器)
語法:函式名(實參列表)
說明:函式名 - 需要呼叫的函式的名字(函式名必須是已經定義過的函式的函式名)
() - 固定寫法
實參列表 - 格式:資料1, 資料2, 資料3, … (實參的個數和形參的個數保持一致)
作用:用來給形參賦值的(真正傳遞到函式中使用的資料)
呼叫函式會執行函式的函式體
str_count('asdfghsddf') # asdfghsddf中大寫字母的個數:4
1.位置引數和關鍵字引數(實參分類)
1)位置引數
實參直接寫(直接),讓實參和形參從位置上一一對應
def
func1
(a, b, c)
:print
(f'a:, b:, c:'
)
2)關鍵字引數
以:形參名1=值1, 形參名2=值2, …的形式傳參
注意:要保證每個引數都有值
單獨使用關鍵字引數傳參
func1(a=
10, b=
20, c=30)
# a:10, b:20, c:30
func1(a=
10, c=
30, b=20)
# a:10, b:20, c:30
3)位置引數和關鍵字引數混合使用
要求:位置引數必須在關鍵字引數的前面
func1(
10, c=
30, b=20)
# a:10, b:20, c:30
func1(10,
20, c=30)
# a:10, b:20, c:30
func1(a=10,
20,30)
# syntaxerror: positional argument follows keyword argument
2.引數預設值(形參)
定義函式的時候可以以:形參名=值 的形式給引數賦預設值,呼叫函式的時候有預設值的可以不用傳參
注意:沒有預設值的引數必須放在有預設值引數的前面
所有的引數都有預設值
def
func2
(x=10
, y=
20, z=30)
:print
(f'x:, y:, z:'
)func2(
)# x:10, y:20, x:30
func2(
100)
# x:100, y:20, x:30
func2(y=
200)
# x:10, y:200, z:30
deffunc2
(y, x=
10, z=30)
:print
(f'x:, y:, z:'
)
3.不定長引數(定義)
定義函式的時候引數個數不確定就可以使用不定長引數
1)在形參前面加 *
帶乙個 * 的形參,本質就是乙個元組,對應的實參會作為這個元組的元素
這種不定長引數的函式只能用位置引數傳參
2)在形參前面加 **
帶乙個 ** 的形參,本質就是乙個字典,對應的實參會作為這個字典的值
這種不定長引數的函式只能用關鍵字引數傳參
def
num_sum1
(*num)
:print
(num)
num_sum1(1,
2,3,
4,5)
# (1, 2, 3, 4, 5)
定義乙個函式,可以求多個數的和
defnum_sum
(*num)
: sum1 =
0for x in num:
sum1 += x
print
(sum1)
num_sum(1)
num_sum(10,
20)num_sum(1,
2,3,
4,5)
defnum_sum2
(**num)
:print
(num)
num_sum2(a=
10, b=20)
#
python基礎 函式引數和內建函式
linux pycharm anaconda 函式引數問題 def function a,b 直接將實參賦予行參,根據位置做匹配。def function a 1,b 2 根據鍵值對的形式做實參與行參的匹配,忽略了引數的位置關係。def function args 可以傳入任意個引數,這些若干引數都...
Python基礎 函式 函式引數
引數就是傳入的值 示例 usr bin env python3 coding utf 8 函式的引數和預設引數 defregist name,age,city shenzhen print name name print age age print city city 執行結果 d pythonpr...
函式基礎(一) 函式 引數
說明一點奧,如果你前置文章沒有看懂,那麼不建議你直接看這個 因為看了也是浪費時間,沒有意義 好,接下來就是python的靈魂部分了 函式 在歷史的長河中,遇到複雜問題的時候,人們總是想能不能對這個問題簡單化處理 於是,模組啊,函式啊什麼的,包括各種演算法就接踵而至了 那函式原先是怎麼想出來的呢?在原...