首頁 後端開發 Python教學 python中函數部分內容的解析

python中函數部分內容的解析

Sep 28, 2018 pm 02:10 PM
Python直函數

這篇文章帶給大家的內容是關於python中函數部分內容的解析,有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

在python中,變數沒有類型,一個物件的引用,類型屬於物件
變數的本質上是一個佔位符!通常用小寫字母命名變數。

一:語法

def 函數名稱(參數清單):
 函數體
(函數名稱命名一般以小寫字母單底線數字等組合)

#二:常用函數的型別

(1)帶參數的函數:參數須以正確的順序傳入函數

(2)預設參數函數:未傳遞參數,則會使用預設參數,預設參數不在最後,會報錯!

(3)關鍵字參數:函數呼叫使用關鍵字參數來決定傳入的參數值

(4)不定長參數:函數能處理比當初宣告時更多的參數,

①*args中所有的變數都會被包裝成一個元組存放所有未命名的變數
②**args中所有變數都會被包裝成一個字典

( 5)宣告函數時,參數中星號* 可以單獨出現,*之後的參數必須用關鍵字傳入

(6)匿名函數,使用lambda函數建立匿名函數

①lambda 只是一個表達式,函數體比def 簡單很多
②lambda的主體是一個表達式,而不是一個代碼塊
③函數擁有自己的命名空間,並且不能訪問自己參數列表之外或全域命名空間裡的參數。

三:python 函數的參數傳遞:

不可變型別:

類似 c 的值傳遞,如 int、string、tuple。
如fun(a),傳遞的只是a的值,沒有影響a物件本身。
例如在fun(a)內部修改a 的值,只是修改另一個複製的對象,不會影響a 本身.

可變類型:

類似c 的引用傳遞,如列表,字典。如fun(la),則是將la 真正的傳過去,修改後fun外部的la也會受影響

python中一切都是對象,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變物件和傳輸可變物件

四:變數作用域

python 中的作用域一般有四種:

L (Local) 局部作用域
E (Enclosing) 閉包函數外的函數中
G (Global) 全域作用域
B (Built-in) 內建作用域

找出規則是L-> ;E->G->B

Python 中只有模組(module),類別(class)以及函數(def、lambda)才會引入新的作用域,其它的程式碼區塊(如if/ elif/else/、try/except、for/while等)是不會引入新的作用域的,也就是說這些語句內定義的變量,外部也可以存取。

五:全域變數與局部變數

定義在函數內部的變數擁有一個局部作用域,定義在函數外的擁有全域作用域。

當內部作用域想要修改外部作用域的變數時,就要用到global和nonlocal關鍵字了。

(1)global用來修改全域變數的值

(2)nonlocal要修改嵌套作用域(enclosing 作用域,外層非全域作用域)中的變數則需要nonlocal 關鍵字了

六:函數呼叫中的技巧(重要)

函數名稱.__doc__取得函數的幫助文件

函數名稱可以作為另一個函數的形參

多個傳回值以元組的方式傳回

內部函數,不修改全域變數可以存取全域變數! !

內部函數,修改同名全域變量,則python會認為它是局部變數! !

七:關於命名

(1)檔名:全小寫,可以使用底線

(2)函數名稱:小寫,小駝峰原則

(3)變數名稱:全部小寫,底線連接

詳細的命名規則參考PEP8

八:幾個特殊的函數
    map
    reduce
    filter

# --------------------------------------------------------------------------#
# 函数的语法及调用
# --------------------------------------------------------------------------#


def func(func_name, number):        # 函数的定义
    """打印输入的任何字符串"""
    print(func_name, number)
    return 'Done'


func('func_1', 'faith')             # 函数的调用

# --------------------------------------------------------------------------#
# 不定长参数函数,封装成元组
# --------------------------------------------------------------------------#


def func_1(func_name, *number):
    """
    打印输入的任何字符串
    """
    print(type(number))
    print(func_name, number)
    return 'Done'


func_1('func_1', 1, 2, 2, 3)


def func_2(func_name, number):   #
    print(type(number))
    print(func_name, number)
    return 'Done'


func_2('func_2', (1, 2, 2, 3))


def func_3(func_name, *number):
    print(func_name)
    print(number[3])            # 根据元组index中一部分变量
    print(number[4])
    return 'Done'


func_3('func_3', 1, 2, 2, 3, 'aaa', 'abc')


# get out question: the number of index isn't known in most case!
# --------------------------------------------------------------------------#
# 不定长参数函数,封装成字典
# --------------------------------------------------------------------------#


def func_4(func_name, **number):  # 可变参数必须在函数参数的最后
    # print(type(number))
    print(func_name, number)
    return 'Done'


func_4('func_4', name='faith')

# --------------------------------------------------------------------------#
# 命名关键字函数
# --------------------------------------------------------------------------#


def func_5(a, x, c, *, china, uk):
    print('func_5:', china, uk)
    print(a, x, c)


func_5(1, 2, 3, china='bJ', uk='rs')    # 调用时必须加上关键字
# func_5(1, 2, 3, 'bJ', 'rs')

# --------------------------------------------------------------------------#
# 函数应用之-递归
# --------------------------------------------------------------------------#


def my_sum(i):
    if i < 0:
        raise ValueError    # 抛出错误
    elif i <= 1:
        return i
    else:
        return i + my_sum(i - 1)


print(my_sum(1.4))

# --------------------------------------------------------------------------#
# 传递不可变对象实例
# --------------------------------------------------------------------------#


def change_int(a):
    a = 10


b = 2
change_int(b)
print(b)         # 结果是2
# --------------------------------------------------------------------------#
# 传递可变对象实例
# --------------------------------------------------------------------------#


def change_me(mylist):
    mylist.append([1, 2, 3, 4])
    print("函数内取值: ", mylist)
    return


myList = [10, 20, 30]
change_me(myList)
print("函数外取值: ", myList)

# --------------------------------------------------------------------------#
# 函数内修改全局变量的值
# --------------------------------------------------------------------------#

money = 200  # 模块里面的全局变量


def add_money():
    global money
    money = money + 1
    return money


print("修改后的值money = ", add_money())


# --------------------------------------------------------------------------#
# 匿名函数
# --------------------------------------------------------------------------#
sum_1 = lambda arg1, arg2: arg1 + arg2

# 调用sum函数
print("相加后的值为 : ", sum_1(10, 20))
print("相加后的值为 : ", sum_1(20, 20))

# 单独编译一个文件时候输出结果
if __name__ == "__main__":
    pass
登入後複製

以上是python中函數部分內容的解析的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Python函數介紹:isinstance函數的用法和範例 Python函數介紹:isinstance函數的用法和範例 Nov 04, 2023 pm 03:15 PM

Python函數介紹:isinstance函數的用法和範例Python是一門功能強大的程式語言,提供了許多內建函數,使得程式設計變得更加方便和有效率。其中一個非常有用的內建函數是isinstance()函數。本文將介紹isinstance函數的用法和範例,並提供具體的程式碼範例。 isinstance()函數用來判斷一個物件是否是指定的類別或類型的實例。該函數的語法如下

Python函數介紹:abs函數的用法和範例 Python函數介紹:abs函數的用法和範例 Nov 03, 2023 pm 12:05 PM

Python函數介紹:abs函數的用法和範例一、abs函數的用法介紹在Python中,abs函數是一個內建函數,用於計算給定數值的絕對值。它可以接受一個數字參數,並傳回該數字的絕對值。 abs函數的基本語法如下:abs(x)其中,x是要計算絕對值的數值參數,可以是整數或浮點數。二、abs函數的範例下面我們將透過一些具體的範例來展示abs函數的用法:範例1:計算

如何解決Python的函數中的硬編碼錯誤? 如何解決Python的函數中的硬編碼錯誤? Jun 25, 2023 pm 08:15 PM

隨著Python程式語言的廣泛應用,開發者常常會在編寫程式過程中遇到「硬編碼錯誤」的問題。所謂“硬編碼錯誤”,指的是將具體的數值、字串等資料直接寫入程式碼中,而不是將其定義為常數或變數。這做法存在著多方面的問題,例如可讀性低,難以維護、修改和測試,同時也會增加出錯的可能性。本篇文章就如何解決Python函數中的硬編碼錯誤這一問題進行探討。一、什麼是硬

Python函數介紹:filter函數的作用與範例 Python函數介紹:filter函數的作用與範例 Nov 04, 2023 am 10:13 AM

Python函數介紹:filter函數的作用和範例Python是一種功能強大的程式語言,提供了許多內建的函數,其中之一就是filter函數。 filter函數用於過濾清單中的元素,並傳回滿足指定條件的元素組成的新清單。在本文中,我們將介紹filter函數的作用,並提供一些範例來幫助讀者理解其用法和潛力。 filter函數的語法如下:filter(function

Python函數介紹:dir函數的用法和範例 Python函數介紹:dir函數的用法和範例 Nov 03, 2023 pm 01:28 PM

Python函數介紹:dir函數的用法和範例Python是一種開源的、進階的、解釋性的程式語言。它可用於開發各種類型的應用程序,包括網頁應用程式、桌面應用程式和遊戲等。 Python提供了大量的內建函數和模組,這些函數和模組可以幫助程式設計師快速編寫高效的Python程式碼。其中,dir函數是一個非常有用的內建函數,它可以幫助程式設計師查看物件、模組或類別中的屬性和方法

Python函數介紹:globals函數的功能和使用範例 Python函數介紹:globals函數的功能和使用範例 Nov 04, 2023 pm 02:58 PM

Python函數介紹:globals函數的功能和使用範例Python是一種功能強大的程式語言,提供了許多內建函數,其中globals()函數就是其中之一。本文將介紹globals()函數的功能和使用範例,並附帶具體的程式碼範例。一、globals函數的功能globals()函數是一個內建函數,用來傳回目前模組的全域變數的字典。它傳回一個包含全域變數的字典,其中

如何解決Python的函數中的並發不安全錯誤? 如何解決Python的函數中的並發不安全錯誤? Jun 24, 2023 pm 12:37 PM

Python是一門流行的高階程式語言,它具有簡單易懂的語法、豐富的標準函式庫和開源社群的支持,而且還支援多種程式設計範式,例如物件導向程式設計、函數式程式設計等。尤其是Python在資料處理、機器學習、科學計算等領域有廣泛的應用。然而,在多執行緒或多進程程式設計中,Python也存在一些問題。其中之一就是併發不安全。本文將從以下幾個方面介紹如何解決Python的函數中的並發不安

Python函數介紹:range函數的介紹及範例 Python函數介紹:range函數的介紹及範例 Nov 04, 2023 am 10:10 AM

Python函數介紹:range函數的介紹及範例Python是一種廣泛應用於各種領域的高階程式語言,它具有簡單易學的特點,並且有著豐富的內建函數庫。其中,range函數是Python中常用的一個內建函數之一。本文將詳細介紹range函數的功能以及使用方法,並透過實例來示範其具體的應用。 range函數是用來產生一個整數序列的函數,它接受三個參數,分別是起始值(

See all articles