日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

一鍵掌握:Python 函數(shù)聲明與調(diào)用的 20 個(gè)優(yōu)秀實(shí)踐

來源: 責(zé)編: 時(shí)間:2024-06-25 17:15:48 152觀看
導(dǎo)讀今天我們要一起探索的是Python世界中的一塊基石——函數(shù)!想象一下,像魔術(shù)師一樣,輕輕一揮手,復(fù)雜的任務(wù)就被封裝成簡潔的命令,這就是函數(shù)的魅力。下面,讓我們用最接地氣的方式,揭開它的神秘面紗,掌握那些讓代碼飛起來的20個(gè)小

今天我們要一起探索的是Python世界中的一塊基石——函數(shù)!想象一下,像魔術(shù)師一樣,輕輕一揮手,復(fù)雜的任務(wù)就被封裝成簡潔的命令,這就是函數(shù)的魅力。下面,讓我們用最接地氣的方式,揭開它的神秘面紗,掌握那些讓代碼飛起來的20個(gè)小技巧。cZQ28資訊網(wǎng)——每日最新資訊28at.com

cZQ28資訊網(wǎng)——每日最新資訊28at.com

1. 基礎(chǔ)中的基礎(chǔ):Hello, Function!

def say_hello(name="World"):    print(f"Hello, {name}!")say_hello("Pythonista")  # 輸出: Hello, Pythonista!

解密:def是定義函數(shù)的關(guān)鍵詞,say_hello是函數(shù)名,括號(hào)內(nèi)是參數(shù),如果沒有提供參數(shù),就用默認(rèn)值。cZQ28資訊網(wǎng)——每日最新資訊28at.com

2. 參數(shù)傳遞:位置VS關(guān)鍵字

def greet(firstName, lastName):    print(f"Hi, I'm {firstName} {lastName}")greet(lastName="Smith", firstName="John")  # 明確指定參數(shù)名

小貼士:通過名字指定參數(shù),讓代碼更易讀,特別是參數(shù)多時(shí)。cZQ28資訊網(wǎng)——每日最新資訊28at.com

3. *args 和 **kwargs:無限參數(shù)的秘密

def super_greet(*names):  # *args 收集位置參數(shù)    for name in names:        print(f"Hello, {name}!")    super_greet("Alice", "Bob", "Charlie")  # 多個(gè)名字一次性處理def versatile_greet(**details):  # **kwargs 收集關(guān)鍵字參數(shù)    for key, value in details.items():        print(f"{key.title()}: {value}")versatile_greet(age=25, city="New York")  # 關(guān)鍵信息一網(wǎng)打盡

神奇之處:*args和**kwargs讓你的函數(shù)可以接受任意數(shù)量的參數(shù),超級(jí)靈活!cZQ28資訊網(wǎng)——每日最新資訊28at.com

4. 返回值不只是一個(gè)

def multiple_returns():    return "Success", 200result, status = multiple_returns()print(result, status)  # 輸出: Success 200

多才多藝:函數(shù)可以返回多個(gè)值,其實(shí)是以元組的形式返回的。cZQ28資訊網(wǎng)——每日最新資訊28at.com

5. 文檔字符串:讓代碼會(huì)說話

def calculate_area(radius):    """    計(jì)算圓的面積。        參數(shù):    radius (float): 圓的半徑        返回:    float: 圓的面積    """    import math    return math.pi * radius**2print(calculate_area.__doc__)  # 查看文檔字符串

文明交流:良好的文檔字符串是團(tuán)隊(duì)合作的潤滑劑,也是自我復(fù)習(xí)的好幫手。cZQ28資訊網(wǎng)——每日最新資訊28at.com

6. 默認(rèn)參數(shù)的坑

def append_to_list(item, my_list=[]):    my_list.append(item)    return my_listprint(append_to_list(1))  # [1]print(append_to_list(2))  # 注意!這里會(huì)是 [1, 2],不是預(yù)期的 [2]

警告:默認(rèn)參數(shù)在函數(shù)定義時(shí)就初始化了,多次調(diào)用時(shí)會(huì)保留之前的值,小心這個(gè)陷阱。cZQ28資訊網(wǎng)——每日最新資訊28at.com

7. 變量作用域:誰能訪問我?

x = "global"def scope_test():    x = "local"    print(x)  # localscope_test()print(x)  # global

名字游戲:在函數(shù)內(nèi)部定義的變量默認(rèn)是局部的,不會(huì)影響到外部的同名變量。cZQ28資訊網(wǎng)——每日最新資訊28at.com

8. 非局部變量的修改

y = 10def modify_outer():    global y  # 告訴Python你想修改外部的y    y = 20modify_outer()print(y)  # 輸出: 20

特權(quán)操作:使用global關(guān)鍵字可以讓函數(shù)內(nèi)部修改全局變量,但要謹(jǐn)慎使用。cZQ28資訊網(wǎng)——每日最新資訊28at.com

9. 閉包:函數(shù)內(nèi)的函數(shù)

def counter():    count = 0    def increment():        nonlocal count        count += 1        return count    return incrementmy_counter = counter()print(my_counter())  # 1print(my_counter())  # 2

內(nèi)外有別:閉包允許內(nèi)部函數(shù)訪問并修改外部函數(shù)的變量,而外部函數(shù)返回的是內(nèi)部函數(shù)的引用。cZQ28資訊網(wǎng)——每日最新資訊28at.com

10. 裝飾器:給函數(shù)穿上花衣

def my_decorator(func):    def wrapper():        print("Something is happening before the function is called.")        func()        print("Something is happening after the function is called.")    return wrapper@my_decoratordef say_hello():    print("Hello!")say_hello()

裝飾生活,裝飾函數(shù):裝飾器是Python的一大特色,它可以在不修改原函數(shù)代碼的情況下增加新功能。cZQ28資訊網(wǎng)——每日最新資訊28at.com

高級(jí)使用場景

11. 遞歸:自己調(diào)用自己的藝術(shù)

def factorial(n):    if n == 1:        return 1    else:        return n * factorial(n-1)print(factorial(5))  # 輸出: 120

無限循環(huán)的智慧:遞歸是解決某些問題的強(qiáng)大工具,但要注意避免無限循環(huán),確保有一個(gè)清晰的終止條件。cZQ28資訊網(wǎng)——每日最新資訊28at.com

12. 匿名函數(shù)lambda:簡潔之美

double = lambda x: x * 2print(double(5))  # 輸出: 10squared = lambda x: x**2numbers = [1, 2, 3]print(list(map(squared, numbers)))  # 輸出: [1, 4, 9]

一閃即逝的美:lambda函數(shù)適合簡單的操作,它們無需定義即可使用,非常適合用在高階函數(shù)中。cZQ28資訊網(wǎng)——每日最新資訊28at.com

13. map()函數(shù):批量操作的藝術(shù)

def square(n):    return n*nnumbers = [1, 2, 3, 4]squared_numbers = list(map(square, numbers))print(squared_numbers)  # 輸出: [1, 4, 9, 16]# 或者用lambda簡化simplified = list(map(lambda x: x*x, numbers))print(simplified)  # 同上

批量處理好幫手:map函數(shù)對(duì)序列的每個(gè)元素應(yīng)用指定函數(shù),返回一個(gè)迭代器對(duì)象,通常轉(zhuǎn)換為列表使用。cZQ28資訊網(wǎng)——每日最新資訊28at.com

14. filter()函數(shù):篩選高手

def is_even(n):    return n % 2 == 0numbers = [1, 2, 3, 4, 5, 6]even_numbers = list(filter(is_even, numbers))print(even_numbers)  # 輸出: [2, 4, 6]# 簡化版even_with_lambda = list(filter(lambda x: x % 2 == 0, numbers))print(even_with_lambda)  # 同上

只選對(duì)的:filter函數(shù)根據(jù)提供的函數(shù)來篩選序列中的元素,返回一個(gè)迭代器,同樣常用list轉(zhuǎn)換。cZQ28資訊網(wǎng)——每日最新資訊28at.com

15. reduce()函數(shù):累積計(jì)算的秘密武器

from functools import reducedef accumulator(acc, item):    return acc + itemnumbers = [1, 2, 3, 4]sum_of_numbers = reduce(accumulator, numbers, 0)print(sum_of_numbers)  # 輸出: 10# 或用lambda簡化sum_with_lambda = reduce(lambda acc, item: acc + item, numbers, 0)print(sum_with_lambda)  # 同上

累積力量:reduce將一個(gè)函數(shù)應(yīng)用于序列的所有元素,累積結(jié)果,非常適合求和、乘積等操作。cZQ28資訊網(wǎng)——每日最新資訊28at.com

16. 偏函數(shù)partial:定制化的便捷

from functools import partialdef power(base, exponent):    return base ** exponentsquare = partial(power, exponent=2)print(square(5))  # 輸出: 25cube = partial(power, exponent=3)print(cube(3))  # 輸出: 27

定制你的函數(shù):偏函數(shù)可以固定原函數(shù)的部分參數(shù),生成新的函數(shù),非常適用于需要多次調(diào)用且參數(shù)變化不大的場景。cZQ28資訊網(wǎng)——每日最新資訊28at.com

17. 遞歸優(yōu)化與尾遞歸

# 注意:Python標(biāo)準(zhǔn)解釋器不直接支持尾遞歸優(yōu)化def factorial_tail(n, accumulator=1):    if n == 1:        return accumulator    else:        return factorial_tail(n-1, n*accumulator)print(factorial_tail(5))  # 輸出: 120

尾聲:雖然Python沒有內(nèi)置的尾遞歸優(yōu)化,理解尾遞歸的概念對(duì)理解函數(shù)調(diào)用棧很有幫助。cZQ28資訊網(wǎng)——每日最新資訊28at.com

18. 閉包進(jìn)階:數(shù)據(jù)封裝

def counter_maker():    count = 0    def increment():        nonlocal count        count += 1        return count    return incrementcounter1 = counter_maker()counter2 = counter_maker()print(counter1(), counter1())  # 輸出: 1 2print(counter2(), counter2())  # 輸出: 1 2

工廠模式:閉包可以用來創(chuàng)建具有獨(dú)立狀態(tài)的函數(shù),類似于面向?qū)ο笾械膶?shí)例。cZQ28資訊網(wǎng)——每日最新資訊28at.com

19. 高階函數(shù):函數(shù)的函數(shù)

def apply_operation(func, a, b):    return func(a, b)add = lambda x, y: x + ysubtract = lambda x, y: x - yprint(apply_operation(add, 5, 3))  # 輸出: 8print(apply_operation(subtract, 5, 3))  # 輸出: 2

函數(shù)的魔力:高階函數(shù)可以接受函數(shù)作為參數(shù)或返回函數(shù),這是函數(shù)式編程的核心概念。cZQ28資訊網(wǎng)——每日最新資訊28at.com

20. 裝飾器進(jìn)階:帶參數(shù)的裝飾器

def repeat(n):    def decorator(func):        def wrapper(*args, **kwargs):            for _ in range(n):                func(*args, **kwargs)        return wrapper    return decorator@repeat(3)def say_hello():    print("Hello!")say_hello()  # 輸出: Hello! Hello! Hello!

裝飾器的新維度:帶參數(shù)的裝飾器讓裝飾器本身也變得靈活,可以根據(jù)需要調(diào)整行為。cZQ28資訊網(wǎng)——每日最新資訊28at.com

至此,我們探索了Python函數(shù)從基礎(chǔ)到進(jìn)階的20個(gè)最佳實(shí)踐,每一個(gè)點(diǎn)都是打開新視野的鑰匙。cZQ28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-96421-0.html一鍵掌握:Python 函數(shù)聲明與調(diào)用的 20 個(gè)優(yōu)秀實(shí)踐

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: LangChain轉(zhuǎn)換鏈:讓數(shù)據(jù)處理更精準(zhǔn)

下一篇: ?英特爾李映:以技術(shù)與專長賦能開發(fā)者,共同推動(dòng)開源技術(shù)的蓬勃發(fā)展

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 鴻蒙OS 4.0公測機(jī)型公布:甚至連nova6都支持

    華為全新的HarmonyOS 4.0操作系統(tǒng)將于今天下午正式登場,官方在發(fā)布會(huì)之前也已經(jīng)正式給出了可升級(jí)的機(jī)型產(chǎn)品,這意味著這些機(jī)型會(huì)率先支持升級(jí)享用。這次的HarmonyOS 4.0支持
  • 中興AX5400Pro+上手體驗(yàn):再升級(jí) 雙2.5G網(wǎng)口+USB 3.0這次全都有

    2021年11月的時(shí)候,中興先后發(fā)布了兩款路由器產(chǎn)品,中興AX5400和中興AX5400 Pro,從產(chǎn)品命名上就不難看出這是隸屬于同一系列的,但在外觀設(shè)計(jì)上這兩款產(chǎn)品可以說是完全沒一點(diǎn)關(guān)系
  • 破圈是B站頭上的緊箍咒

    來源 | 光子星球撰文 | 吳坤諺編輯 | 吳先之每年的暑期檔都少不了瞄準(zhǔn)追劇女孩們的古偶劇集,2021年有優(yōu)酷的《山河令》,2022年有愛奇藝的《蒼蘭訣》,今年卻輪到小破站抓住了追
  • 騰訊VS網(wǎng)易,最卷游戲暑期檔,誰能笑到最后?

    作者:無銹缽來源:財(cái)經(jīng)無忌7月16日晚,上海1862時(shí)尚藝術(shù)中心。伴隨著幻象的精準(zhǔn)命中,碩大的熒幕之上,比分被定格在了14:12,被寄予厚望的EDG戰(zhàn)隊(duì)以絕對(duì)的優(yōu)勢戰(zhàn)勝了BLG戰(zhàn)隊(duì),拿下了總決
  • 阿里大調(diào)整

    來源:產(chǎn)品劉有媒體報(bào)道稱,近期淘寶天貓集團(tuán)啟動(dòng)了近年來最大的人力制度改革,涉及員工績效、層級(jí)體系等多個(gè)核心事項(xiàng),目前已形成一個(gè)初步的“征求意見版”:1、取消P序列
  • 重估百度丨大模型,能撐起百度的“今天”嗎?

    自象限原創(chuàng) 作者|程心 羅輯2023年之前,對(duì)于自己的“今天”,百度也很迷茫。“新業(yè)務(wù)到 2022 年底還是 0,希望 2023 年出來一個(gè) 1。”這是2022年底,李彥宏
  • 蘋果、三星、惠普等暫停向印度出口筆記本和平板電腦

    集微網(wǎng)消息,據(jù)彭博社報(bào)道,在8月3日印度突然禁止在沒有許可證的情況下向印度進(jìn)口電腦/平板及顯示器等產(chǎn)品后,蘋果、三星電子和惠普等大公司暫停向印度
  • iQOO Neo8 Pro即將開售:到手價(jià)3099元起 安卓性能最強(qiáng)旗艦

    5月23日,iQOO如期舉行了新品發(fā)布會(huì),全新的iQOO Neo8系列也正式與大家見面,包含iQOO Neo8和iQOO Neo8 Pro兩個(gè)版本,其中標(biāo)準(zhǔn)版搭載高通驍龍8+,而Pro版更
  • iQOO Neo8系列新品發(fā)布會(huì)

    旗艦雙芯 更強(qiáng)更Pro
Top 主站蜘蛛池模板: 齐河县| 乐亭县| 天柱县| 彰化市| 达日县| 杨浦区| 大悟县| 偃师市| 南和县| 当雄县| 海阳市| 固阳县| 临湘市| 吉安市| 那曲县| 河东区| 横峰县| 壶关县| 南昌市| 宁陕县| 鄂伦春自治旗| 永泰县| 遂宁市| 乐陵市| 宁德市| 宁远县| 兴安县| 勐海县| 鹿泉市| 鲁甸县| 绿春县| 邳州市| 常熟市| 汉中市| 乃东县| 建始县| 辽宁省| 海伦市| 和田县| 随州市| 阜康市|