Python函數(shù)的作用域及內(nèi)置函數(shù)詳解
1.函數(shù)的作用域
-- 內(nèi)置
-- 全局,頂格寫
-- 局部,函數(shù)內(nèi)部
a = 34 #全局變量
def run():
b = 44 #局部變量
print(a)
print(b) #不可以直接調(diào)用局部變量,報(bào)錯(cuò)
運(yùn)行結(jié)果:

c = 12
def run(a):
print(a)
b = 33
run(5)
# 一個(gè)全局變量c
# 兩個(gè)局部變量a,b
# 函數(shù)的參數(shù)也是局部變量
運(yùn)行結(jié)果:
5
局部 VS 全局
-- 局部空間(函數(shù)內(nèi))獲取全局變量,Yes
-- 全部空間(函數(shù)外)獲取局部變量,No,但可以間接通過(guò)返回值 return 獲取
-- 全局空間(函數(shù)外)修改局部變量,No
-- 局部空間(函數(shù)內(nèi))修改全部變量,Yes,但必須要聲明,global 全局變量名
siwei = 99
def run():
print('函數(shù)執(zhí)行')
print(siwei)# 調(diào)用全局變量,可以正常使用
run()
運(yùn)行結(jié)果:
函數(shù)執(zhí)行
99
siwei = 99
def run():
print('函數(shù)執(zhí)行')
a = 88
print(siwei)# 調(diào)用全局變量,可以正常使用
return a #用返回值,返給全局變量result
result = run()
print(result)
運(yùn)行結(jié)果:
函數(shù)執(zhí)行
99
88
siwei = 99
def run():
print('函數(shù)執(zhí)行')
a = 88
print(siwei)# 調(diào)用全局變量,可以正常使用
return a #用返回值,返給全局變量result
result = run()
print(result)
運(yùn)行結(jié)果:
100
2.函數(shù)的調(diào)用詳解
注意:
-- 函數(shù)必須先定義再調(diào)用
-- 不同函數(shù)定義的先后順序無(wú)關(guān)
-- 函數(shù)體內(nèi)可以調(diào)用函數(shù)自己本身,但一般不這樣使用,容易出錯(cuò)
# 還沒(méi)定義函數(shù)就直接調(diào)用,所以會(huì)報(bào)錯(cuò)
offer('lili',20,'辣條')
def eat(name,food):
print('{} 最喜歡吃 {}'.format(name,food))
def offer(name,money,food):
print('恭喜 {} 拿到 {}k offer'.format(name,money))
eat(name,food)
運(yùn)行結(jié)果:

# 一個(gè)函數(shù)當(dāng)中是可以去調(diào)用另外一個(gè)函數(shù)的
def eat(name,food):
print('{} 最喜歡吃 {}'.format(name,food))
def offer(name,money,food):
print('恭喜 {} 拿到 {}k offer'.format(name,money))
eat(name,food)
offer('lili',20,'辣條')
運(yùn)行結(jié)果:
恭喜 lili 拿到 20k offer
lili 最喜歡吃 辣條
# 兩個(gè)函數(shù)位置互換是不影響結(jié)果的
def offer(name,money,food):
print('恭喜 {} 拿到 {}k offer'.format(name,money))
eat(name,food)
def eat(name,food):
print('{} 最喜歡吃 {}'.format(name,food))
offer('lili',20,'辣條')
運(yùn)行結(jié)果:
恭喜 lili 拿到 20k offer
lili 最喜歡吃 辣條
可以通過(guò)Debug模式來(lái)詳細(xì)查看一下代碼的運(yùn)行過(guò)程
offer 和 eat 函數(shù)第一行被執(zhí)行,函數(shù)體里的代碼不會(huì)被執(zhí)行
當(dāng)offer 被調(diào)用時(shí),代碼自動(dòng)找offer函數(shù),然后進(jìn)入函數(shù)體內(nèi),然后執(zhí)行eat 函數(shù)
代碼自動(dòng)找eat 函數(shù),然后進(jìn)入函數(shù)體

# 函數(shù)自己可以調(diào)用自己本身,但會(huì)報(bào)遞歸錯(cuò)誤
def run():
print('正在運(yùn)行!')
run()
run()
運(yùn)行結(jié)果:
RecursionError: maximum recursion depth exceeded while calling a Python object
遞歸錯(cuò)誤:調(diào)用Python對(duì)象時(shí)超過(guò)的最大遞歸深度
3.內(nèi)置函數(shù)
enumrate():獲取列表的索引值與元素值
list1 = ['a','b',1,2]
for i in enumerate(list1):
# 輸入結(jié)果是數(shù)據(jù)類型是元組
print(i)
for index,value in enumerate(list1):
# 輸出結(jié)果:索引值是int類型,元素值是什么數(shù)據(jù)類型就是什么類型
print(index,value)
運(yùn)行結(jié)果:
(0, 'a') ====> tuple
(1, 'b')
(2, 1)
(3, 2)
0 a ====> 0 int a str
1 b
2 1====> 2 int 1 int
3 2
eval():去掉字符串兩邊的引號(hào)
string = '1 + 1' string1 = '7.8 + 4.5' string2 = '(1,2,3)' print(string,type(string)) # 去掉引號(hào),相當(dāng)于變成了算數(shù)運(yùn)算 print(eval(string),type(eval(string))) print(eval(string1),type(eval(string1))) # 去掉引號(hào),相當(dāng)于變成了元組 print(eval(string2),type(eval(string2)))
運(yùn)行結(jié)果:
1 + 1 <class 'str'>
2 <class 'int'>
12.3 <class 'float'>
(1, 2, 3) <class 'tuple'>
zip():用于將可迭代的對(duì)象作為參數(shù),按索引號(hào)打包成一組一組
title = ['id','name','url']
row = ['1','lili','http://www.baidu1.com']
# zip迭代每一個(gè)元素,按索引號(hào)打包成一組,然后通過(guò)dict轉(zhuǎn)換成字典
result = dict(zip(title,row))
print(result)
# 列表,元組都可以轉(zhuǎn)換成字典
title1 = ('id','name','url')
row1 = ['2','lili','http://www.baidu2.com']
result1 =dict(zip(title1,row1))
print(result1)
運(yùn)行結(jié)果:
{'id': '1', 'name': 'lili', 'url': 'http://www.baidu1.com'}
{'id': '2', 'name': 'lili', 'url': 'http://www.baidu2.com'}
a = [1,2,3]
b = ('a','b','c')
c = 'qaz'
result = dict(zip(a,c))
result1 = dict(zip(a,b))
result2 = dict(zip(b,c))
print(result)
print(result1)
print(result2)
運(yùn)行結(jié)果:
{1: 'q', 2: 'a', 3: 'z'}
{1: 'a', 2: 'b', 3: 'c'}
{'a': 'q', 'b': 'a', 'c': 'z'}
sum(iterable[, start]):求和,求和的類型必須是數(shù)字
terable – 可迭代對(duì)象,如:列表(list)、元組(tuple)、集合(set)、字典(dict)
start – 指定相加的參數(shù),如果沒(méi)有設(shè)置這個(gè)值,默認(rèn)為0
所以 sum(1,2,3) 是錯(cuò)誤的,sum(必須是可迭代對(duì)象)
list1 = [2,3,4]
tuple1 = (1,1,1)
dict1= {60.5:'chinese',70:'math'}
set1 = {1,2,3}
print(sum(list1,1))#列表中2,3,4 加上start的值1
print(sum(tuple1))#元組中1,1,1加上默認(rèn)start的值0
print(sum(dict1))#字典中相加的是key的值,key若不是數(shù)字會(huì)報(bào)錯(cuò)
print(sum(set1))#集合里必須是一層,不能嵌套其他層
運(yùn)行結(jié)果:
10
3
130.5
6
max():求最大值
min() :求最小值
list1 = [1,2,3] print(max(list1)) print(max(3,4,5)) print(min(list1)) print(min(4,5,6))
運(yùn)行結(jié)果:
3
5
1
4
id():查看內(nèi)存地址
a = 10 b = 10 # 不可變類型(字符串,元組等),內(nèi)存地址一樣 print(id(a)) print(id(b)) # 可變類型(列表,字典),內(nèi)存地址不一樣 c = [1,2,3] d = [1,2,3] print(id(c)) print(id(d))
運(yùn)行結(jié)果:
140716744443840
140716744443840
1975790732416
1975791019584
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
Jetson?NX?配置?pytorch的問(wèn)題及解決方法
這篇文章主要介紹了Jetson?NX?配置?pytorch的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
基于Python實(shí)現(xiàn)的戀愛(ài)對(duì)話小程序詳解
這篇文章主要介紹了基于Python制作一個(gè)戀愛(ài)對(duì)話小程序,文章詳細(xì)介紹了小程序的實(shí)現(xiàn)過(guò)程,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)學(xué)習(xí)2022-01-01
Python實(shí)現(xiàn)的排列組合、破解密碼算法示例
這篇文章主要介紹了Python實(shí)現(xiàn)的排列組合、破解密碼算法,結(jié)合實(shí)例形式分析了Python排列組合、密碼破解相關(guān)數(shù)學(xué)運(yùn)算操作技巧,需要的朋友可以參考下2019-04-04
matplotlib在python上繪制3D散點(diǎn)圖實(shí)例詳解
這篇文章主要介紹了matplotlib在python上繪制3D散點(diǎn)圖實(shí)例詳解,首先介紹了官網(wǎng)的實(shí)例,然后分享了本文簡(jiǎn)單代碼示例,具有一定借鑒價(jià)值,需要的朋友可以了解下。2017-12-12
Python使用re模塊實(shí)現(xiàn)正則表達(dá)式操作指南
在Python中需要通過(guò)正則表達(dá)式對(duì)字符串進(jìn)?匹配的時(shí)候,可以使??個(gè)python自帶的模塊,名字為re,下面這篇文章主要給大家介紹了關(guān)于Python使用re模塊實(shí)現(xiàn)正則表達(dá)式操作的相關(guān)資料,需要的朋友可以參考下2022-07-07
python+pytest接口自動(dòng)化之session會(huì)話保持的實(shí)現(xiàn)
在接口測(cè)試的過(guò)程中,經(jīng)常會(huì)遇到有些接口需要在登錄的狀態(tài)下才能請(qǐng)求,本文主要介紹了python+pytest接口自動(dòng)化之session會(huì)話保持的實(shí)現(xiàn),感興趣的可以了解一下2022-06-06
python繪制發(fā)散型柱狀圖+誤差陰影時(shí)間序列圖+雙坐標(biāo)系時(shí)間序列圖+繪制金字塔圖
這篇文章主要介紹了python繪制發(fā)散型柱狀圖+誤差陰影時(shí)間序列圖+雙坐標(biāo)系時(shí)間序列圖+繪制金字塔圖,詳細(xì)的內(nèi)容需要的小伙伴可以參考一下下面文章內(nèi)容2022-08-08
Python對(duì)Excel兩列數(shù)據(jù)進(jìn)行運(yùn)算的示例代碼
本文介紹了如何使用Python中的pandas庫(kù)對(duì)Excel表格中的兩列數(shù)據(jù)進(jìn)行運(yùn)算,并提供了詳細(xì)的代碼示例,感興趣的朋友跟隨小編一起看看吧2024-04-04

