91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python函數的作用域以及內置函數詳解

發布時間:2021-09-13 21:12:40 來源:億速云 閱讀:152 作者:chen 欄目:開發技術

這篇文章主要講解了“Python函數的作用域以及內置函數詳解”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Python函數的作用域以及內置函數詳解”吧!

目錄
  • 1.函數的作用域

  • 2.函數的調用詳解

  • 3.內置函數


1.函數的作用域

-- 內置

-- 全局,頂格寫

-- 局部,函數內部

a = 34 #全局變量
def run():
    b = 44 #局部變量
print(a)
print(b) #不可以直接調用局部變量,報錯

運行結果:

Python函數的作用域以及內置函數詳解

c = 12
def run(a):
    print(a)
    b = 33
run(5)
# 一個全局變量c
# 兩個局部變量a,b
# 函數的參數也是局部變量

運行結果:

5

局部 VS 全局

-- 局部空間(函數內)獲取全局變量,Yes

-- 全部空間(函數外)獲取局部變量,No,但可以間接通過返回值 return 獲取

-- 全局空間(函數外)修改局部變量,No

-- 局部空間(函數內)修改全部變量,Yes,但必須要聲明,global 全局變量名

siwei = 99
def run():
    print('函數執行')
    print(siwei)# 調用全局變量,可以正常使用
run()

運行結果:

函數執行
99

siwei = 99
def run():
    print('函數執行')
    a = 88
    print(siwei)# 調用全局變量,可以正常使用
    return a #用返回值,返給全局變量result
result = run()
print(result)

運行結果:

函數執行
99
88

siwei = 99
def run():
    print('函數執行')
    a = 88
    print(siwei)# 調用全局變量,可以正常使用
    return a #用返回值,返給全局變量result
result = run()
print(result)

運行結果:

100

2.函數的調用詳解

注意:

-- 函數必須先定義再調用

-- 不同函數定義的先后順序無關

-- 函數體內可以調用函數自己本身,但一般不這樣使用,容易出錯

# 還沒定義函數就直接調用,所以會報錯
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)

運行結果:

Python函數的作用域以及內置函數詳解

# 一個函數當中是可以去調用另外一個函數的
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,'辣條')

運行結果:

恭喜 lili 拿到 20k offer
lili 最喜歡吃 辣條

# 兩個函數位置互換是不影響結果的
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,'辣條')

運行結果:

恭喜 lili 拿到 20k offer
lili 最喜歡吃 辣條

可以通過Debug模式來詳細查看一下代碼的運行過程

offer 和 eat 函數第一行被執行,函數體里的代碼不會被執行

當offer 被調用時,代碼自動找offer函數,然后進入函數體內,然后執行eat 函數

代碼自動找eat 函數,然后進入函數體

Python函數的作用域以及內置函數詳解

# 函數自己可以調用自己本身,但會報遞歸錯誤
def run():
    print('正在運行!')
    run()
run()

運行結果:

RecursionError: maximum recursion depth exceeded while calling a Python object

遞歸錯誤:調用Python對象時超過的最大遞歸深度

3.內置函數

enumrate():獲取列表的索引值與元素值

list1 = ['a','b',1,2]
for i in enumerate(list1):
    # 輸入結果是數據類型是元組
    print(i)
for index,value in enumerate(list1):
    # 輸出結果:索引值是int類型,元素值是什么數據類型就是什么類型
    print(index,value)

運行結果:

(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():去掉字符串兩邊的引號

string = '1 + 1'
string1 = '7.8 + 4.5'
string2 = '(1,2,3)'
print(string,type(string))
# 去掉引號,相當于變成了算數運算
print(eval(string),type(eval(string)))
print(eval(string1),type(eval(string1)))
# 去掉引號,相當于變成了元組
print(eval(string2),type(eval(string2)))

運行結果:

1 + 1 <class 'str'>
2 <class 'int'>
12.3 <class 'float'>
(1, 2, 3) <class 'tuple'>

zip():用于將可迭代的對象作為參數,按索引號打包成一組一組

title = ['id','name','url']
row = ['1','lili','http://www.baidu1.com']
# zip迭代每一個元素,按索引號打包成一組,然后通過dict轉換成字典
result = dict(zip(title,row))
print(result)
# 列表,元組都可以轉換成字典
title1 = ('id','name','url')
row1 = ['2','lili','http://www.baidu2.com']
result1 =dict(zip(title1,row1))
print(result1)

運行結果:

{'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)

運行結果:

{1: 'q', 2: 'a', 3: 'z'}
{1: 'a', 2: 'b', 3: 'c'}
{'a': 'q', 'b': 'a', 'c': 'z'}

sum(iterable[, start]):求和,求和的類型必須是數字

terable – 可迭代對象,如:列表(list)、元組(tuple)、集合(set)、字典(dict)

start – 指定相加的參數,如果沒有設置這個值,默認為0

所以 sum(1,2,3) 是錯誤的,sum(必須是可迭代對象)

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加上默認start的值0
print(sum(dict1))#字典中相加的是key的值,key若不是數字會報錯
print(sum(set1))#集合里必須是一層,不能嵌套其他層

運行結果:

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))

運行結果:

3
5
1
4

id():查看內存地址

a = 10
b = 10
# 不可變類型(字符串,元組等),內存地址一樣
print(id(a))
print(id(b))
# 可變類型(列表,字典),內存地址不一樣
c = [1,2,3]
d = [1,2,3]
print(id(c))
print(id(d))

運行結果:

140716744443840
140716744443840
1975790732416
1975791019584

感謝各位的閱讀,以上就是“Python函數的作用域以及內置函數詳解”的內容了,經過本文的學習后,相信大家對Python函數的作用域以及內置函數詳解這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

山阴县| 建宁县| 肃南| 惠来县| 乐东| 边坝县| 广南县| 阳信县| 湖州市| 黄陵县| 嘉兴市| 金塔县| 舒城县| 上思县| 武功县| 晋州市| 永新县| 广宁县| 彭阳县| 特克斯县| 依兰县| 赤水市| 元阳县| 石柱| 介休市| 紫云| 沧源| 盐池县| 南江县| 新兴县| 扎赉特旗| 台东市| 娱乐| 梓潼县| 饶河县| 呼和浩特市| 怀集县| 德令哈市| 盐边县| 扎兰屯市| 双流县|