python函数定义错误_[转载]python之函数的使用及异常处理2021.1.30
2.1 定義函數
def 函數名(參數):
代碼1
代碼2
......
2.2 調?函數
函數名(參數)
注意:
1. 不同的需求,參數可有可?。
2. 在Python中,函數必須先定義后使?。
2.3 快速體驗
需求:復現ATM取錢功能。
1. 搭建整體框架(復現需求)
print('密碼正確登錄成功')
# 顯示"選擇功能"界?
print('查詢余額完畢')
# 顯示"選擇功能"界?
print('取了2000元錢')
# 顯示"選擇功能"界?
2. 確定“選擇功能”界?內容
print('查詢余額')
print('存款')
print('取款')
3. 封裝"選擇功能"
注意:?定是先定義函數,后調?函數。
# 封裝ATM機功能選項 -- 定義函數
def select_func():
print('-----請選擇功能-----')
print('查詢余額')
print('存款')
print('取款')
print('-----請選擇功能-----')
4. 調?函數
在需要顯示“選擇功能”函數的位置調?函數。
print('密碼正確登錄成功')
# 顯示"選擇功能"界? -- 調?函數
select_func()
print('查詢余額完畢')
# 顯示"選擇功能"界? -- 調?函數
select_func()
print('取了2000元錢')
# 顯示"選擇功能"界? -- 調?函數
select_func()
三.函數的參數作?
思考:完成需求如下:?個函數完成兩個數1和2的加法運算,如何書寫程序?
# 定義函數
def add_num1():
result = 1 + 2
print(result)
# 調?函數
add_num1()
思考:上述add_num1函數只能完成數字1和2的加法運算,如果想要這個函數變得更靈活,可以計算任何?戶指定的兩個數字的和,如何書寫程序?
分析:?戶要在調?函數的時候指定具體數字,那么在定義函數的時候就需要接收?戶指定的數字。函數調?時候指定的數字和定義函數時候接收的數字即是函數的參數。
# 定義函數時同時定義了接收?戶數據的參數a和b,a和b是形參
def add_num2(a, b):
result = a + b
print(result)
# 調?函數時傳?了真實的數據10 和 20,真實數據為實參
add_num2(10, 20)
四.函數的返回值作?
例如:我們去超市購物,?如買煙,給錢之后,是不是售貨員會返回給我們煙這個商品,在函數中,如果需要返回結果給?戶需要使?函數返回值。
def buy():
return '煙'
# 使?變量保存函數返回值
goods = buy()
print(goods)
4.1 應?
需求:制作?個計算器,計算任意兩數字之和,并保存結果。
def sum_num(a, b):
return a + b
# ?result變量保存函數返回值
result = sum_num(1, 2)
print(result)
五.函數的說明?檔
思考:定義?個函數后,程序員如何書寫程序能夠快速提示這個函數的作??
答:注釋
思考:如果代碼多,我們是不是需要在很多代碼中找到這個函數定義的位置才能看到注釋?如果想更?便的查看函數的作?怎么辦?
答:函數的說明?檔
函數的說明?檔也叫函數的?檔說明。
5.1 語法
定義函數的說明?檔
def 函數名(參數):
""" 說明?檔的位置 """
代碼
......
查看函數的說明?檔
help(函數名)
5.2 快速體驗
def sum_num(a, b):
""" 求和函數 """
return a + b
help(sum_num)
六.函數嵌套調?
所謂函數嵌套調?指的是?個函數???調?了另外?個函數。
示例
def testB():
print('---- testB start----')
print('這?是testB函數執?的代碼...(省略)...')
print('---- testB end----')
def testA():
print('---- testA start----')
testB()
print('---- testA end----')
testA()
執?流程
如果函數A中,調?了另外?個函數B,那么先把函數B中的任務都執?完畢之后才會回到上次 函數A執?的位置。
七. 變量作?域
變量作?域指的是變量?效的范圍,主要分為兩類:局部變量和全局變量。
局部變量
所謂局部變量是定義在函數體內部的變量,即只在函數體內部?效。
def testA():
a = 100
print(a)
testA() # 100
print(a) # 報錯:name 'a' is not defined
變量a是定義在 testA 函數內部的變量,在函數外部訪問則?即報錯。
局部變量的作?:在函數體內部,臨時保存數據,即當函數調?完成后,則銷毀局部變量。
全局變量
所謂全局變量,指的是在函數體內、外都能?效的變量。
思考:如果有?個數據,在函數A和函數B中都要使?,該怎么辦?
答:將這個數據存儲在?個全局變量??。
# 定義全局變量a
a = 100
def testA():
print(a) # 訪問全局變量a,并打印變量a存儲的數據
def testB():
print(a) # 訪問全局變量a,并打印變量a存儲的數據
testA() # 100
testB() # 100
思考: testB 函數需求修改變量a的值為200,如何修改程序?
a = 100
def testA():
print(a)
def testB():
a = 200
print(a)
testA() # 100
testB() # 200
print(f'全局變量a = {a}') # 全局變量a = 100
思考:在 testB 函數內部的 a = 200 中的變量a是在修改全局變量 a 嗎?
答:不是。觀察上述代碼發現,15?得到a的數據是100,仍然是定義全局變量a時候的值,?沒有返回testB 函數內部的200。綜上: testB 函數內部的 a = 200 是定義了?個局部變量。
思考:如何在函數體內部修改全局變量?
a = 100
def testA():
print(a)
def testB():
# global 關鍵字聲明a是全局變量
global a
a = 200
print(a)
testA() # 100
testB() # 200
print(f'全局變量a = {a}') # 全局變量a = 200
八. 多函數程序執?流程
?般在實際開發過程中,?個程序往往由多個函數(后?知識中會講解類)組成,并且多個函數共享某些數據,如下所示:
共?全局變量
# 1. 定義全局變量
glo_num = 0
def test1():
global glo_num
# 修改全局變量
glo_num = 100
def test2():
# 調?test1函數中修改后的全局變量
print(glo_num)
# 2. 調?test1函數,執?函數內部代碼:聲明和修改全局變量
test1()
# 3. 調?test2函數,執?函數內部代碼:打印
test2() # 100
返回值作為參數傳遞
def test1():
return 50
def test2(num):
print(num)
# 1. 保存函數test1的返回值
result = test1()
# 2.將函數返回值所在變量作為參數傳遞到test2函數
test2(result) # 50
九. 函數的返回值
思考:如果?個函數如些兩個return (如下所示),程序如何執??
def return_num():
return 1
return 2
result = return_num()
print(result) # 1
答:只執?了第?個return,原因是因為return可以退出當前函數,導致return下?的代碼不執?。
思考:如果?個函數要有多個返回值,該如何書寫代碼?
def return_num():
return 1, 2
result = return_num()
print(result) # (1, 2)
注意:
1. return a, b 寫法,返回多個數據的時候,默認是元組類型。
2. return后?可以連接列表、元組或字典,以返回多個值。
十. 函數的參數
10.1 位置參數
位置參數:調?函數時根據函數定義的參數位置來傳遞參數。
def user_info(name, age, gender):
print(f'您的名字是{name}, 年齡是{age}, 性別是{gender}')
user_info('TOM', 20, '男')
注意:傳遞和定義參數的順序及個數必須?致。
10.2 關鍵字參數
函數調?,通過“鍵=值”形式加以指定。可以讓函數更加清晰、容易使?,同時也清除了參數的順序需求。
def user_info(name, age, gender):
print(f'您的名字是{name}, 年齡是{age}, 性別是{gender}')
user_info('Rose', age=20, gender='?')
user_info('?明', gender='男', age=16)
注意:函數調?時,如果有位置參數時,位置參數必須在關鍵字參數的前?,但關鍵字參數之間不存在
先后順序。
10.3 缺省參數
缺省參數也叫默認參數,?于定義函數,為參數提供默認值,調?函數時可不傳該默認參數的值(注意:所有位置參數必須出現在默認參數前,包括函數定義和調?)。
def user_info(name, age, gender='男'):
print(f'您的名字是{name}, 年齡是{age}, 性別是{gender}')
user_info('TOM', 20)
user_info('Rose', 18, '?')】
注意:函數調?時,如果為缺省參數傳值則修改默認參數值;否則使?這個默認值。
十一. 函數應?
11.1 打印圖形
1. 打印?條橫線
def print_line():
print('-' * 20)
print_line()
2. 打印多條橫線
def print_line():
print('-' * 20)
def print_lines(num):
i = 0
while i < num:
print_line()
i += 1
print_lines(5)
11.2 函數計算
1. 求三個數之和
def sum_num(a, b, c):
return a + b + c
result = sum_num(1, 2, 3)
print(result) # 6
2. 求三個數平均值
def average_num(a, b, c):
sumResult = sum_num(a, b, c)
return sumResult / 3
result = average_num(1, 2, 3)
print(result) # 2.0
總結
以上是生活随笔為你收集整理的python函数定义错误_[转载]python之函数的使用及异常处理2021.1.30的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 复制诊断_诊断Mysql复制
- 下一篇: python缩进编码教程_python基