def max(a,b):
return a if a>b else b
print(max(1, 2))
# 函數(shù)進(jìn)階
# a = 1
# def func():
# print(a)
# func()
# 命名空間和作用域
# print()
# input()
# list
# tuple
#命名空間 有三種
#內(nèi)置命名空間 —— python解釋器
# 就是python解釋器一啟動就可以使用的名字存儲在內(nèi)置命名空間中
# 內(nèi)置的名字在啟動解釋器的時候被加載進(jìn)內(nèi)存里
#全局命名空間 —— 我們寫的代碼但不是函數(shù)中的代碼
# 是在程序從上到下被執(zhí)行的過程中依次加載進(jìn)內(nèi)存的
# 放置了我們設(shè)置的所有變量名和函數(shù)名
#局部命名空間 —— 函數(shù)
# 就是函數(shù)內(nèi)部定義的名字
# 當(dāng)調(diào)用函數(shù)的時候 才會產(chǎn)生這個名稱空間 隨著函數(shù)執(zhí)行的結(jié)束 這個命名空間就又消失了
#在局部:可以使用全局、內(nèi)置命名空間中的名字
#在全局:可以使用內(nèi)置命名空間中的名字,但是不能用局部中使用
#在內(nèi)置:不能使用局部和全局的名字的
# def func():
# a = 1
#
# func()
# print(a)
# def max(l):
# print('in max func')
#
# print(max([1,2,3]))
#在正常情況下,直接使用內(nèi)置的名字
#當(dāng)我們在全局定義了和內(nèi)置名字空間中同名的名字時,會使用全局的名字
#當(dāng)我自己有的時候 我就不找我的上級要了
#如果自己沒有 就找上一級要 上一級沒有再找上一級 如果內(nèi)置的名字空間都沒有 就報錯
# 多個函數(shù)應(yīng)該擁有多個的局部名字空間,不互相共享
# def input():
# print('in input now')
# def func():
# # input = 1
# print(input)
# func()
# def fun1():
# a = 1
#
# def fun2():pass
#func --> 函數(shù)的內(nèi)存地址
#函數(shù)名() 函數(shù)的調(diào)用
#函數(shù)的內(nèi)存地址() 函數(shù)的調(diào)用
# 作用域兩種
# 全局作用域 —— 作用在全局 —— 內(nèi)置和全局名字空間中的名字都屬于全局作用域 ——globals()
# 局部作用域 —— 作用在局部 —— 函數(shù)(局部名字空間中的名字屬于局部作用域) ——locals()
# a = 1
# def func():
# global a
# a = 2
#
# func()
# print(a)
# 對于不可變數(shù)據(jù)類型 在局部可是查看全局作用域中的變量
# 但是不能直接修改
# 如果想要修改,需要在程序的一開始添加global聲明
# 如果在一個局部(函數(shù))內(nèi)聲明了一個global變量,那么這個變量在局部的所有操作將對全局的變量有效
# a = 1
# b = 2
# def func():
# x = 'aaa'
# y = 'bbb'
# print(locals())
# print(globals())
#
# func()
# print(globals())
# print(locals()) #本地的
#globals 永遠(yuǎn)打印全局的名字
#locals 輸出什么 根據(jù)locals所在的位置
# a = 1
# def func(a):
# a = 2
# return a
#
# a = func(a)
# print(a)
?