欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python學(xué)習(xí)筆記之函數(shù)的定義和作用域?qū)嵗斀?/h1>
 更新時間:2019年08月13日 11:17:01   作者:Johnny丶me  
這篇文章主要介紹了Python學(xué)習(xí)筆記之函數(shù)的定義和作用域,結(jié)合實例形式詳細分析了Python函數(shù)的定義、參數(shù)使用、變量作用域相關(guān)問題與解決方法,需要的朋友可以參考下

本文實例講述了Python函數(shù)的定義和作用域。分享給大家供大家參考,具體如下:

定義函數(shù)

默認參數(shù): 可以向函數(shù)中添加默認參數(shù),以便為在函數(shù)調(diào)用中未指定的參數(shù)提供默認值

# 如果調(diào)用 cylinder_volume 函數(shù)時,不提供radius參數(shù),那么radius的值為5
def cylinder_volume(height, radius=5):
  pi = 3.14159
  return height * pi * radius ** 2

向函數(shù)中的參數(shù)傳值的方法:按照位置和按照名稱

cylinder_volume(10, 7) # 1539.3791
cylinder_volume(height=10, radius=7) # 1539.3791
cylinder_volume(radius=7, height=10) # 1539.3791

注意:上述第一種是常用的按照位置傳值,第二種和第三種是按照名稱傳值

定義函數(shù)[相關(guān)練習(xí)]

寫一個名稱為 population_density 的函數(shù),該函數(shù)有兩個參數(shù) population 和 land_area,并根據(jù)這兩個值返回人口密度。

解決方案:

def population_density(population, land_area):
  return population / land_area
test1 = population_density(10, 1)
expected_result1 = 10
print("expected result: {}, actual result: {}".format(expected_result1, test1)) # expected result: 10, actual result: 10.0
test2 = population_density(864816, 121.4)
expected_result2 = 7123.6902801
print("expected result: {}, actual result: {}".format(expected_result2, test2)) # expected result: 7123.6902801, actual result: 7123.690280065897

寫一個叫做 readable_timedelta 的函數(shù),該函數(shù)有一個參數(shù):整數(shù) days,并返回一個表示由多少周多少天組成的字符串。例如 readable_timedelta(10) 應(yīng)返回“1 week(s) and 3 day(s).”。

解決方案:

def readable_timedelta(days):
  weeks = int(days / 7)
  day = days % 7
  return str(weeks) + ' week(s) and ' + str(day) + ' day(s).'
print(readable_timedelta(10)) # 1 week(s) and 3 day(s).

函數(shù)中的變量作用域

  • 變量作用域是指可以在程序的哪個部分引用或使用某個變量。
  • 在函數(shù)中使用變量時,務(wù)必要考慮作用域。如果變量是在函數(shù)內(nèi)創(chuàng)建的,則只能在該函數(shù)內(nèi)使用該變量。你無法從該函數(shù)外面訪問該變量。

錯誤的示例:

# This will result in an error
def some_function():
  word = "hello"
print(word)

這意味著你可以為在不同函數(shù)內(nèi)使用的不同變量使用相同的名稱, 正確的示例如下:

def some_function():
  word = "hello"
def another_function():
  word = "goodbye"

在函數(shù)之外定義的變量依然可以在函數(shù)內(nèi)訪問。

word = "hello"
def some_function():
  print(word)
print(word)

Best Practise:建議將變量定義在所需的最小作用域內(nèi)。雖然函數(shù)可以引用在更大的作用域內(nèi)定義的變量,但是通常不建議這么做,因為如果程序有很多變量,你可能不知道你定義了什么變量。

注意:Python 不允許函數(shù)修改不在函數(shù)作用域內(nèi)的變量,執(zhí)行下列代碼,看發(fā)生了什么

egg_count = 0
def buy_eggs():
  egg_count += 12 # purchase a dozen eggs
buy_eggs()

此時會發(fā)生錯誤, 導(dǎo)致 UnboundLocalError : 當(dāng)我們嘗試將函數(shù)外的一個變量的值更改或重新賦值為另一個值時,我們將遇到這個錯誤, 但是這個原則僅適用于整數(shù)和字符串, 列表、字典、集合、類中可以在子程序中(子函數(shù))通過修改局部變量達到修改全局變量的目的。

關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python函數(shù)使用技巧總結(jié)》、《Python面向?qū)ο蟪绦蛟O(shè)計入門與進階教程》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python字符串操作技巧匯總》、《Python編碼操作技巧總結(jié)》及《Python入門與進階經(jīng)典教程

希望本文所述對大家Python程序設(shè)計有所幫助。

相關(guān)文章

  • Python利用pygame模塊制作代碼雨

    Python利用pygame模塊制作代碼雨

    對Python游戲有所了解的朋友都知道,在2D的游戲制作中,經(jīng)常會用到一個模塊pygame,他能幫助我們實現(xiàn)很多方便使用的功能,本文就來用pygame模塊制作代碼雨效果,需要的可以了解一下
    2023-05-05
  • openCV顯著性檢測的使用

    openCV顯著性檢測的使用

    顯著性檢測就是使用圖像處理技術(shù)和計算機視覺算法來定位圖片中最“顯著”的區(qū)域,本文主要介紹了openCV顯著性檢測的使用,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 如何在django里上傳csv文件并進行入庫處理的方法

    如何在django里上傳csv文件并進行入庫處理的方法

    這篇文章主要介紹了如何在django里上傳csv文件并進行入庫處理的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Python生態(tài)圈圖像格式轉(zhuǎn)換問題(推薦)

    Python生態(tài)圈圖像格式轉(zhuǎn)換問題(推薦)

    在Python生態(tài)圈里,最常用的圖像庫是PIL——盡管已經(jīng)被后來的pillow取代,但因為pillow的API幾乎完全繼承了PIL,所以大家還是約定俗成地稱其為PIL。這篇文章主要介紹了Python生態(tài)圈圖像格式轉(zhuǎn)換問題,需要的朋友可以參考下
    2019-12-12
  • Keras深度學(xué)習(xí)模型Sequential和Model詳解

    Keras深度學(xué)習(xí)模型Sequential和Model詳解

    這篇文章主要介紹了Keras深度學(xué)習(xí)模型Sequential和Model詳解,在Keras中有兩種深度學(xué)習(xí)的模型:序列模型(Sequential)和通用模型(Model),差異在于不同的拓撲結(jié)構(gòu),,需要的朋友可以參考下
    2023-08-08
  • Python列表與元組操作技巧分享

    Python列表與元組操作技巧分享

    Python 中的列表(List)和元組(Tuple)是兩種常用的數(shù)據(jù)結(jié)構(gòu),它們都可以用來存儲一系列的元素,在本文中,我們將分享一些 Python 中列表和元組的操作技巧,幫助您更好地理解它們的用法和特性,需要的朋友可以參考下
    2024-05-05
  • django連接數(shù)據(jù)庫獲取數(shù)據(jù)的簡單步驟記錄

    django連接數(shù)據(jù)庫獲取數(shù)據(jù)的簡單步驟記錄

    數(shù)據(jù)庫中各種表結(jié)構(gòu)已經(jīng)創(chuàng)建好了,甚至連數(shù)據(jù)都有了,此時我要用Django管理這個數(shù)據(jù)庫,下面這篇文章主要給大家介紹了關(guān)于django連接數(shù)據(jù)庫獲取數(shù)據(jù)的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Python通過樸素貝葉斯和LSTM分別實現(xiàn)新聞文本分類

    Python通過樸素貝葉斯和LSTM分別實現(xiàn)新聞文本分類

    樸素貝葉斯法(Naive Bayes model)是基于貝葉斯定理與特征條件獨立假設(shè)的分類方法。LSTM則是一種時間循環(huán)神經(jīng)網(wǎng)絡(luò),適合于處理和預(yù)測時間序列中間隔和延遲相對較長的重要事件。本文將通過這兩個方法分別實現(xiàn)新聞文本分類,需要的可以參考一下
    2021-12-12
  • PyCharm 2021.2 (Professional)調(diào)試遠程服務(wù)器程序的操作技巧

    PyCharm 2021.2 (Professional)調(diào)試遠程服務(wù)器程序的操作技巧

    本文給大家分享用 PyCharm 2021 調(diào)試遠程服務(wù)器程序的過程,通過圖文并茂的形式給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-08-08
  • Scrapy基于scrapy_redis實現(xiàn)分布式爬蟲部署的示例

    Scrapy基于scrapy_redis實現(xiàn)分布式爬蟲部署的示例

    這篇文章主要介紹了Scrapy基于scrapy_redis實現(xiàn)分布式爬蟲部署的示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評論