[Day_23]函式与递回_(2)

函式与变数的作用范围

变数作用范围分成全域变数与函式内的区域变数,宣告在最上面最外层的称作全域变数,宣告在函式内的变数称作区域变数,函式内若没有那个变数就会往函式外找寻,举例如以下范例:

#input
g = 10
def f1():
    print(g)
f1()

#output
10

若函式内有一个区域变数,与全域变数名称一样的变数,若读取区域变数在初始化区域变数之前,则会产生UnboundLocalError错误,下表中程序第3行。因为会产生UnboundLocalError错误,所以使用井字号「#」进行注解让该行没有作用,若要测试此错误就可以将井字号「#」删除,再执行程序一次,就会出现UnboundLocalError错误。

从以下程序可以发现,全域变数g与区域变数g,是两个不同的变数,函式内区域变数g作用范围在函式内,全域变数g作用范围为整个档案,但因为函式内区域变数有相同的变数名称,函式会优先使用区域变数,若找不到才去找全域变数。

#input
g = 10
def f1():
    #print(g)
    g = 20
    print(g)
f1()
print(g)

#output
20
10

函式内若没有那个变数就会往函式外去寻找,也可以使用global宣告区域变数,该区域变数将明确指向全域变数,也就是宣告为global的区域变数一定指向相同名称的全域变数,如下:

#input
g = 10
def f1():
    global g
    print(g)
    g = 20
    print(g)
f1()
print(g)

#output
10
20
20

明天会给一些题目做练习喔!!
/images/emoticon/emoticon12.gif


<<:  Day 22:计算机概论

>>:  【把玩Azure DevOps】Day25 接收Azure DevOps的通知:Microsoft Teams频道中的连结器

鼠年全马铁人挑战 WEEK 35: 负载性能测试 - Gatling (下)

           Photo on gatling.io 前言 上周小弟简单的介绍了一下 Ga...

Day-23 你没想到的Excel average知识

今日练习档 ԅ( ¯་། ¯ԅ) 经过昨天详细的介绍SUM家族後,今天理所当然要介绍与其相似的AVE...

[day8] 实务搭建 - 储值卡,系统概述

将钱先放到你的金卡,可以享大大大优惠,点点卡、OO卡、XX卡、网咖等都是先储值再消费,这边将实作一个...

day19 Kotlin coroutine flow with liveData in MVVM

恩,标题不知道怎麽下成中文 在之前的范例里,示范了如何用coroutine做一次性的网路请求,并交结...

Day13 - 使用Chip和ChipGroup显示搜寻项目

原本今天是想写解析文章列表的,不过思考了一下,为了让脉络顺一点,决定把今天的内容放到解析文章列表之前...