Python基礎(七)

1 模塊函數

1.1 模塊函數

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

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

1.2 導入

導入方法主要有三種:函數

1.2.1 import moudle

import math
math.e

在這裏插入圖片描述

1.2.2 import module as alias

alias表示別名.工具

在這裏插入圖片描述

1.2.3 from module import function

從模塊導入函數.spa

在這裏插入圖片描述

1.2.4 from module import function as alias

與上一種相似,加上了別名.code

在這裏插入圖片描述

2 自定義函數

2.1 定義函數

使用關鍵字def定義:對象

def func():
    print(1)

2.2 設置docstring

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

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

在這裏插入圖片描述

2.3 函數調用

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

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 調用

調用能夠經過"函數名"調用,或者配合其餘函數使用.

在這裏插入圖片描述

相關文章
相關標籤/搜索