Python基礎(七)

1 模塊函數

1.1 模塊函數

模塊函數指的是模塊中的函數,模塊函數有三種:python

  • 內置模塊:又叫標準庫.
  • 第三方開源模塊:能夠經過包管理工具進行安裝.
  • 自定義模塊.

1.2 導入

導入方法主要有三種:ide

1.2.1 import moudle

import math
math.e

在這裏插入圖片描述

1.2.2 import module as alias

alias表示別名.
在這裏插入圖片描述函數

1.2.3 from module import function

從模塊導入函數.
在這裏插入圖片描述工具

1.2.4 from module import function as alias

與上一種相似,加上了別名.
在這裏插入圖片描述code

2 自定義函數

2.1 定義函數

使用關鍵字def定義:對象

def func():
    print(1)

2.2 設置docstring

docstring就是註釋,描述了函數的功能,使用三個單引號或三個雙引號,能夠用help()獲取函數的docstring.blog

def func():
    '''
    func docstring
    '''
    print(1)
help(func)

在這裏插入圖片描述

2.3 函數調用

直接使用函數名便可,須要的話要加上參數.圖片

func()
func(22)

2.4 返回值

返回值在return裏指定,能夠返回多個值:string

def f():
    return 1,2,3,4

至關於返回一個元組.若函數沒有return,則返回None.it

2.5 形參

2.5.1 形參分類

形參就是函數定義時的參數列表裏面的參數,能夠分爲:

  • 可選形參:給出默認值的形參.
  • 必選形參:沒有給出默認的形參.
def f(x1,x2,x3=3)

其中x1,x2必選形參,x3可選形參.

2.5.2 * 與 **

帶一個 的形參表示該形參類型爲元組,帶兩個 的形參表示該參數類型爲字典.

2.5.3 命名關鍵字參數

出如今*後的參數.

def f(x1,*x2,x3,x4)

x3與x4就是命名關鍵字參數,在調用時必須顯式使用參數名.

2.6 實參

python實參能夠分爲位置實參與關鍵字實參.

2.6.1 位置參數

位置參數就是沒有指定形參名字的實參,每一個實參基於順序關聯到一個形參.

2.6.2 關鍵字參數

關鍵字參數就是指定了形參名字的實參,用鍵值對的形式指定,能夠不按順序調用.

def f(x1,x2,x3):
    print(x1,x2,x3)
f(1,2,3)
f(x3=999,x1=888,x2=999999)

在這裏插入圖片描述

2.7 變量可見性

python變量的可見性有三種:全局變量,局部變量,非局部變量.

2.7.1 局部變量

在函數內的變量爲局部變量,所以,如下代碼會輸出9:

x1 = 8
def f():
    x1 = 9
    print(x1)
f()

若是在x1以前輸出呢?
在這裏插入圖片描述
直接提示沒有定義x1,就是全局變量x1在函數內不可見,但筆者不死心,必定要運行一下.
在這裏插入圖片描述
它說局部變量x1沒有被賦值,注意,是局部變量,所以,這也證實了全局變量在函數內不可見.

2.7.2 全局變量

若要使全局變量在函數內可見,使用global:

x1 = 8
def f():
    global x1
    print(x1)
    x1 = 9
    print(x1)
f()

在這裏插入圖片描述
global x1表示x1是一個全局變量,注意global x1須要單獨佔一行.

2.7.3 非局部變量

用於嵌套函數中,使用nonlocal聲明,表示內層函數的這個變量是外層函數的.

x1 = 8
def f():
    x1 = 9
    print(x1)
    def f1():
        nonlocal x1
        print(x1)
        x1 = 10
        print(x1)
    return f1
f()
f()()

在這裏插入圖片描述
第一個與第二個9都是f()中的print()輸出的,第三個9是f1()中的print()輸出的.

2.8 參數傳遞規則

當實參傳遞給形參時,有兩種傳遞規則,一是值傳遞,而是地址傳遞.

2.8.1 值傳遞

當實參爲不可變對象時,採用值傳遞規則,常見的不可變對象類型包括int,float,str,bool,tuple.

def f(x):
    x = 1
    print(x)
x = 3
print('-------int------')
f(x)
print(x)
print()

x = 'string'
print('-------str------')
f(x)
print(x)
print()

x = (3,4,5)
print('-------tuple------')
f(x)
print(x)
print()

x = 5.799
print('-------float------')
f(x)
print(x)
print()

在這裏插入圖片描述

2.8.2 地址傳遞

參數爲可變對象時,採用地址傳遞規則,修改形參的值會同時改變實參的值.常見的可變對象類型包括list,set,dict.

def f(x):
    if type(x) == list:
        x = x.reverse()
    elif isinstance(x,set):
        x.add(8)
    else:
        x['0'] = 3
x = [1,2,3]
print('-------list------')
print(x)
f(x)
print(x)
print()

x = {4,5,6}
print('-------set------')
print(x)
f(x)
print(x)
print()

x = {'a':1,'b':2}
print('-------dict------')
print(x)
f(x)
print(x)
print()

在這裏插入圖片描述

2.9 lambda函數

lambda是一種特殊的自定義函數,使用關鍵字lambda進行定義,是一種匿名函數,函數體通常很短.

2.9.1 定義

以關鍵字lambda開頭,後面是參數列表,參數列表結束後加一個冒號,後面是返回值.

y = lambda x:x*3
z = lambda x,y:x*y

2.9.2 調用

調用能夠經過"函數名"調用,或者配合其餘函數使用.
在這裏插入圖片描述

相關文章
相關標籤/搜索