function1.py
# Functions是可以重復(fù)使用的程序片段醇滥。通過調(diào)用Calling函數(shù)蹬挤,就可以重復(fù)使用
# len range 都是內(nèi)置函數(shù)
# 函數(shù)用來構(gòu)建不同塊 通過def來定義
def say_hello(): #這個函數(shù)沒有參數(shù)
#該塊屬于這一函數(shù)
print('hello world')
#函數(shù)結(jié)束
print('Done')
say_hello()
say_hello()
function_param.py
#參數(shù)在定義函數(shù)的圓括號中指定 通過(,)進行分隔
#定義函數(shù)時給定的名稱叫形參Parameters
#調(diào)用函數(shù)時提供給函數(shù)的值叫實參Arguments
def print_max(a,b): #a,b為形參
if a > b:
print(a, 'is maximum')
elif a == b:
print(a, 'is equal to', b)
else:
print(b, 'is maximum')
#直接傳遞字面值
print_max(3,4)
#以參數(shù)形式傳遞
#x y為實參
x = 5
y = 7
print_max(x,y)
function_local.py
# 在函數(shù)內(nèi)部聲明變量時殊鞭,它不會與函數(shù)外部的同名變量產(chǎn)生關(guān)系
# 它的作用域Scope僅在函數(shù)內(nèi)部
x = 50
def func(x):
print('global x is', x)
x = 2
print('change local x to', x)
func(x)
print('global x is still', x)
function_global.py
# 要想定義一個global變量必須要使用global關(guān)鍵字
x = 50
def func():
global x #定義此處的x為global變量 global x,y,z
print('global x is', x)
x = 2
print('change global x to', x)
func()
print('Now global x is', x)
function_default.py
# 為函數(shù)提供默認值
# 通過(=)來為參數(shù)指定默認參數(shù)值
# 默認參數(shù)值是不可變的颅围,即字面值常量
def say(message='Hi',times=1):
print(message * times)
say()
say('Hello\t')
say('Hello\t',5)
#只有位于參數(shù)列表末尾的參數(shù)才能被賦予參數(shù)值髓抑,即在參數(shù)列表中
#有默認參數(shù)值的參數(shù)不能在沒有默認參數(shù)值的參數(shù)前面 因為值是按照參數(shù)位置依次分配的
#example:
#def func(a,b=5) right
#def func(a=5,b) wrong
#如果你定義的函數(shù)沒有形參 但是你調(diào)用的時候傳遞了實參那也會報錯
function_keyword.py
# 如果函數(shù)有很多參數(shù)校翔,但你只希望對其中的一些進行指定滤港,
# 那么可以通過命名而不是位置來指定參數(shù)
def func(a, b=5, c=10):
print('a is', a, 'and b is', b, 'and c is', c)
func(3,7)
func(25,c=24)
func(c=50,a=100)
func(a=50)
#一定要指定a的值 不管是通過命名還是通過位置指定 否則會報錯
function_varargs.py
# 定義的函數(shù)里的參數(shù)變量是可變的
# 通過(*)實現(xiàn)
# 聲明一個諸如*param的星號參數(shù)時,從此處開始到結(jié)束的所有位置參數(shù)parameters
# 將被匯集成一個param的元組Tuple
# 聲明一個諸如**param的雙星號參數(shù)時添寺,從此處開始到結(jié)束的所有關(guān)鍵字參數(shù)
# 都被匯集成一個param的字典Dictionary
def total(a=5, *numbers, **phonebook):
print('a', a)
#遍歷元組中所有項目
for single_item in numbers:
print('single_item', single_item)
#遍歷字典中所有項目
for first_part,second_part in phonebook.items():
print(first_part,second_part)
total(10,15,21,aa=1,bb=2,cc=4)
print(total(10,15,21,aa=1,bb=2,cc=4)) #這里的None是怎么回事胯盯?
#下面已經(jīng)解釋了函數(shù)默認return的就是None
***function_return.py
def maximum(x, y):
if x > y:
return x
elif x == y:
return 'The numbers are equal'
else:
return y
print(maximum(2,3))
print(maximum(2,2))
print(maximum(-5,-2))
# return 默認返回的值是None
# 每一個函數(shù)在其末尾隱含了一句 return None
# pass可以不使用return語句 它用于指示一個沒有內(nèi)容的語句塊
function_docString.py
def print_max(x,y):
# 下面是該函數(shù)的文檔字符串DocString
# 第一行以大寫字母開頭,以句號結(jié)束计露。闡述這個函數(shù)的作用博脑。
# 第二行是空行。
# 第三行開始是詳細的解釋說明
# 在文檔中出現(xiàn)中文會報錯 這一問題還沒解決
'''Prints the maximum of two number.
The two values must be integers.'''
x = int(x)
y = int(y)
if x > y:
print(x, 'is maximum')
else:
print(y, 'is maximum')
print_max(3,5)
print(print_max.__doc__)
help(print_max)
# 函數(shù)的__doc__屬性可以獲取文檔字符串內(nèi)容票罐。
# 因為Python所有的東西都是可以視作一個對象
function_dir.py
# dir()函數(shù)能夠返回由對象所定義的名稱列表
# 如果對象是一個模塊 則會包含模塊內(nèi)的函數(shù) 類 變量
# dir()函數(shù)返回參數(shù)模塊的名稱列表
# 如果沒有參數(shù) 則返回當前模塊的名稱列表
import sys
# 給出sys模塊的屬性名稱
print(dir(sys))
# 給出當前模塊的屬性名稱
print(dir())
a = 5
print(dir())
del a
print(dir())
# dir()能對任何對象工作 dir(str)