python函數

1 函數的特性

  1. 功能性
  2. 隱藏細節
  3. 避免編寫重複的代碼

2 函數的定義及運行特點

使用def來定義函數;

def funcname(parameter_list)pass
  1. 參數列表可以沒有
  2. 使用return value來返回函數值,否則返回None
  3. 改變程序遞歸的次數
      import sys
      sys.setrecursionlimit(xxxx)
    當函數返回多個結果時,最好的方式是使用多個變量名來接收:
def damage(skill1,skill2):
    damage1 = skill1*2
    damage2 = skill2*3+10
    return damage1,damage2

skill1_damage,skill2_damage = damage(4,2)
print(skill1_damage,skill2_damage)

序列解包:用有意義的變量名稱來返回函數的有效值。

3 必須參數與關鍵字參數

(注意是在函數調用上而不是定義上)
1. 必須參數:函數的參數列表中定義的必須賦值的參數。必須放在參數列表的前面。
2. 關鍵字參數:可以在函數調用時明確指出實參是傳給哪個形參的,不一定要按照形參順序。可以大大提高閱讀代碼的效率。

def add(x,y)result = x+y
    return result

c = add(y=3,x=2)  # 此處就用了關鍵字參數  
  1. 默認參數:沒有設置默認值的參數必須傳遞實參。
def student(name,age=18,sex='boy'):
    print("My name is "+name+". I'm "+str(age)+", and I am a "+sex+".")

student('Tom')
student('Lilly',sex='girl')

打印結果如下:
這裏寫圖片描述
4. 可變參數:在參數列表前加一個*,在傳遞實參時就可以輸入多個實參,並且結果是輸出一個元組。

def demo(*param):
    print(param)

demo(1,2,3,4,5,6,7,8)

打印結果如下:
這裏寫圖片描述

  1. 關鍵字可變參數:
def squsum(*param):  # 可變參數
    sum = 0
    for i in param:
        sum += i*i
    print(sum)

squsum(1,2,3)  

def city_temp(**param):  # 關鍵字可變參數
    print(param)
    print(type(param))
    for key,value in param.items(): # 字典的遍歷需要調用它的items()方法
        print(key,':',value)

city_temp(bj='32c',xm='23c',sh='31c')

# 當然字典也可以直接來傳參  
a = {'xa':'16c','nt':'12c','ng':'15c'}
city_temp(**a)

這裏寫圖片描述

變量作用域

全局變量:函數外部定義的,函數內部也可以使用
局部變量:函數內部定義的,函數外部不可以使用
* for,while,if內部的變量是可以在循環外被引用的(python特有)

global關鍵字

在局部變量前加global關鍵字可以將其轉變爲全局變量

def demo():
    global c
    c = 2

demo()
print(c)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章