Python學習日記2(函數和模塊)

學習歷程按照Github上jackfrued的100天學習python的進度來進行胞谈,再輔上一些自己查找的相關資料阱当。
對應傳送門:https://github.com/jackfrued/Python-100-Days/tree/master/

Day05 構造程序邏輯

1.在python中留攒,/代表浮點數除法,//代表整數除法
2.python求冪方法:(1) math模塊中的pow函數 (2) 使用**運算符(*為乘法,**為乘方)
"*"和"**"的其它定義:https://blog.csdn.net/liuxingen/article/details/50113923 (Python的星號(*白魂、**)的作用)

Day06 函數和模塊的使用

1.python沒有函數重載的功能
2.python使用關鍵字def來定義函數,例子

def factorial(num):
    """
    求階乘
    :param num: 非負整數
    :return: num的階乘
    """
    result = 1
    for n in range(1, num + 1):
        result *= n
    return result

(注:python中自帶的求階乘friction函數在math模塊內)

  1. python函數的參數可以有默認值上岗,當調用該函數的時候如果沒有傳入對應參數的話會直接使用參數的默認值福荸。例子:
from random import randint

def roll_dice(n=2):
    """
    搖色子
    
    :param n: 色子的個數
    :return: n顆色子點數之和
    """
    total = 0
    for _ in range(n):
        total += randint(1, 6)
    return total

def add(a=0, b=0, c=0):
    return a + b + c

# 如果沒有指定參數那么使用默認值搖兩顆色子
print(roll_dice())
# 搖三顆色子
print(roll_dice(3))
print(add())
print(add(1))
print(add(1, 2))
print(add(1, 2, 3))
# 傳遞參數時可以不按照設定的順序進行傳遞
print(add(c=50, a=100, b=200))
  1. 當函數的參數不確定時,可以采用可變參數*args肴掷,可變參數*args相當于一個元組敬锐,具體例子:
def add(*args):
    total = 0
    for val in args:
        total += val
    return total

print(add())
print(add(1))
print(add(1, 2))
print(add(1, 2, 3))
print(add(1, 3, 5, 7, 9))
  1. 如果在同一個.py文件中定義了兩個同名函數的話,由于Python沒有函數重載的概念呆瞻,那么后面的定義會覆蓋之前的定義台夺,也就意味著兩個函數同名函數實際上只有一個是存在的。為了避免這一狀況痴脾,我們可以在不同模塊中定義它們颤介。(Python中每個文件就代表了一個模塊(module))在使用函數的時候我們通過import關鍵字導入指定的模塊就可以區(qū)分到底要使用的是哪個模塊中的foo函數,代碼如下所示。

module1.py

def foo():
    print('hello, world!')

module2.py

def foo():
    print('goodbye, world!')

test.py

from module1 import foo
# 輸出hello, world!
foo()

from module2 import foo
# 輸出goodbye, world!
foo()

也可以按照如下所示的方式來區(qū)分到底要使用哪一個foo函數滚朵。

test.py

import module1 as m1
import module2 as m2

m1.foo()
m2.foo()

6.當導入的模塊中有可執(zhí)行代碼的時候冤灾,python會執(zhí)行對應的代碼,所以為了避免這種情況辕近,可以對里面的可執(zhí)行代碼放入模塊判斷的條件中韵吨,只有當該模塊為主運行模塊的時候才會進行運行。
__name__是Python中一個隱含的變量它代表了模塊的名字
只有被Python解釋器直接執(zhí)行的模塊的名字才是__main__
module3.py

def foo():
    pass


def bar():
    pass

# __name__是Python中一個隱含的變量它代表了模塊的名字
# 只有被Python解釋器直接執(zhí)行的模塊的名字才是__main__
if __name__ == '__main__':
    print('call foo()')
    foo()
    print('call bar()')
    bar()

test.py

import module3
# 導入module3時 不會執(zhí)行模塊中if條件成立時的代碼 因為模塊的名字是module3而不是__main__
  1. Python的函數里面可以再定義函數
  2. 為了減少全局變量的使用(global全局變量使用過多可能會發(fā)生意料之外的修改和使用以及可能導致對象占用的內存長時間無法被垃圾回收)亏推,降低代碼之間的耦合度学赛,這就意味著應該盡量讓變量的作用域在函數的內部,因此主函數可以按照下面方法進行書寫:
def main():
    # Todo: Add your code here
    pass


if __name__ == '__main__':
    main()
  1. python中的變量作用域:Python查找一個變量時會按照“局部作用域”吞杭、“嵌套作用域”盏浇、“全局作用域”和“內置作用域”的順序進行搜索
def foo():
    b = 'hello'

    def bar():  # Python中可以在函數內部再定義函數
        c = True
        print(a)
        print(b)
        print(c)

    bar()
    # print(c)  # NameError: name 'c' is not defined


if __name__ == '__main__':
    a = 100
    # print(b)  # NameError: name 'b' is not defined
    foo()

在上述代碼中,對bar函數而言芽狗,a為全局作用域绢掰,b為嵌套作用域,c為局部作用域童擎。
(對應鏈接:https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/06.%E5%87%BD%E6%95%B0%E5%92%8C%E6%A8%A1%E5%9D%97%E7%9A%84%E4%BD%BF%E7%94%A8.md

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末滴劲,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子顾复,更是在濱河造成了極大的恐慌班挖,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芯砸,死亡現場離奇詭異萧芙,居然都是意外死亡,警方通過查閱死者的電腦和手機假丧,發(fā)現死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進店門双揪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人包帚,你說我怎么就攤上這事渔期。” “怎么了渴邦?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵疯趟,是天一觀的道長。 經常有香客問我谋梭,道長迅办,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任章蚣,我火速辦了婚禮站欺,結果婚禮上姨夹,老公的妹妹穿的比我還像新娘。我一直安慰自己矾策,他們只是感情好磷账,可當我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著贾虽,像睡著了一般逃糟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蓬豁,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天绰咽,我揣著相機與錄音,去河邊找鬼地粪。 笑死取募,一個胖子當著我的面吹牛,可吹牛的內容都是我干的蟆技。 我是一名探鬼主播玩敏,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼质礼!你這毒婦竟也來了旺聚?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤眶蕉,失蹤者是張志新(化名)和其女友劉穎砰粹,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體造挽,經...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡伸眶,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了刽宪。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡界酒,死狀恐怖圣拄,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情毁欣,我是刑警寧澤庇谆,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站凭疮,受9級特大地震影響饭耳,放射性物質發(fā)生泄漏。R本人自食惡果不足惜执解,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一寞肖、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦新蟆、人聲如沸觅赊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吮螺。三九已至,卻和暖如春帕翻,著一層夾襖步出監(jiān)牢的瞬間鸠补,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工嘀掸, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留紫岩,地道東北人。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓横殴,卻偏偏與公主長得像被因,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子衫仑,可洞房花燭夜當晚...
    茶點故事閱讀 45,685評論 2 360

推薦閱讀更多精彩內容

  • 第5章 函數和函數式編程 5.1 引言函數是組織好的梨与,可重復使用的,用來實現單一文狱,或相關聯功能的代碼段粥鞋。函數...
    VIVAFT閱讀 961評論 0 5
  • 要點: 函數式編程:注意不是“函數編程”,多了一個“式” 模塊:如何使用模塊 面向對象編程:面向對象的概念瞄崇、屬性呻粹、...
    victorsungo閱讀 1,522評論 0 6
  • Can you get an MIT education for $2,000? | Scott Young 美國...
    不會停的蝸牛閱讀 2,046評論 1 14
  • 世間真的沒有后悔藥,真的沒有苏研。 某男性患者等浊,40多歲,因糖尿病伴氣短摹蘑、夜間不可平臥入院筹燕。辦理入院是早晨10點多,精...
    yu菇涼閱讀 762評論 0 3
  • 傳統教育告訴我們人要有上進心人生要有意義衅鹿,致使我們做事情過日子總在乎其意義截粗,而忽視其意思丐巫。意義和意思的區(qū)別...
    于中好閱讀 624評論 0 0