菜鳥學python 基礎(3)

2021-06-27 02:24:55 字數 4879 閱讀 9151

模組

模組就是把一組相關的函式或**組織到乙個檔案中,即乙個檔案就是乙個模組。模組是由**、類和函式組成的,其中類和函式可以有0個或多個。

新建乙個firstmodule.py,即定義了乙個名為firstmodule的模組。在該模組定義兩個函式和乙個類,並在該類中定義乙個方法,**如下:

# _*_ coding:utf-8 _*_

# 自定義模組

def function_one():

print 'firstmodule function_one()'

def function_two():

print 'firstmodule function_two()'

class firstclass:

def __init__(self):

pass

def first_class_function(self):

print 'firstmodule firstclass first_class_function()'

另外再新建乙個名為ex.py的檔案,在其中輸入如下**,呼叫firstmodule模組的函式和類:

import firstmodule

firstmodule.function_one()

firstmodule.function_two()

firstclass = firstmodule.firstclass()

firstclass.first_class_function()

輸出如下:

firstmodule function_one()

firstmodule function_two()

firstmodule firstclass first_class_function()

模組的匯入

在前面的例子中,我們知道匯入模組需要使用import語句。格式如下:

import module_name

這樣可以匯入乙個模組,要呼叫模組已經定義的函式,需要使用:

module_name.function_name

要呼叫模組中的類,需要建立類的物件,然後再通過類物件呼叫類中的方法。語法格式如下:

class_object=module_name.class_name

class_object.class_function_name

這種方式比較麻煩,每次呼叫模組中的函式或類時,都需要使用模組名作為字首。所以,為了解決這種麻煩,python中的from...import..語句可以將模組中的類或函式匯入,而不需要使用模組名作為字首,格式如下:

from module_name import function_name

注意:雖然這樣減少了**的編寫,但是降低了**的可讀性。

匯入乙個模組下的所有類和函式,可以使用如下語句:

from module_name import *

模組屬性

python中的每個模組都有一些特定的屬性,用於完成某項任務。常用的兩個模組屬性:

1)__name__屬性

__name__屬性用於判斷當前模組是不是程式入口。如果當前程式正在被使用,__name__的值為__main__。

2)__doc__屬性

python中的模組是乙個物件,而每個物件都會有乙個__doc__屬性,該屬性用於描述該物件的作用。

模組的內建函式

python提供了乙個內聯模組-buildin,該模組中定義了許多函式。

function_name:該引數是必須的,表示自定義的函式的名稱。

args:該引數是可選的,它是乙個包含了自定義函式引數的列表和元組。如果不指定該引數,則表示被執行的函式沒有任何引數。

kwargs:該引數是可選的,它是乙個字典型別的引數,字典中的key值為函式的引數名稱,value值為實際引數的值。

下面是乙個例子:

def login(username, password):

message = ''

if(username == 'admin') and (password == 'admin'):

message = 'login success.'

else:

message = 'login error!'

return message

結果:

login success.

2)filter()函式

filter()函式可以對序列做過濾處理,簡單來說就是用函式過濾乙個序列,把序列的每一項傳遞到過濾函式。對自定義函式的引數返回的結果是否為true做過濾,並一次性返回處理結果。如果過濾函式返回的結果為false,那麼該元素將從列表中刪除該項。filter()函式的語法格式如下:

filter(function_name, sequence)

該函式有兩個引數:

function_name:該函式是必須的,它是自定義函式,在函式function_name()中定義過濾的規則。如果function_name()函式的返回值為none,則表示sequence序列中的每一項都為true,從而返回左右的序列元素。

sequence:該引數也是必須的,表示要過濾的序列。

例子:

# _*_ coding:utf-8 _*_

# 驗證使用者名稱的函式validate(), 長度在4-12之間

def validate(username):

if(len(username) > 4) and (len(username) < 12):

return username

# 呼叫filter(), 過濾validate()函式中的元組引數

print filter(validate, ('admin', 'root', 'aaron'))

結果:

('admin', 'aaron')
注意:

filter()中的過濾函式function_name的引數不能為空,否則沒有可儲存sequence元素的變數,function_name()也不能處理過濾。

要想在注釋中使用中文,必須在.py檔案的第一行加上# _*_ coding:utf-8 _*_,否則會報syntaxerror: non-ascii character... 異常。

3)reduce()函式

reduce()函式可以實現連續處理的功能。例如,對某個序列中的元素進行累加操作。reduce()函式的語法格式如下:

reduce(function_name, sequence[ , initial])

reduce()函式有3個引數:

function_name:該引數是必須的,表示自定義的函式名稱,在函式function_name()中實現對引數sequence的連續操作。

sequence:該引數也是必須的,表示待處理的序列。

initial:該引數是可選的,如果指定了該引數的值,則initial所指定的值將首先被傳入function_name()函式中進行計算。如果sequence引數的值為空,則對initial所指定的值進行處理。

例子:

# _*_ coding:utf-8 _*_

# 定義計算兩個數相乘的函式multiply()

def multiply(x, y):

return x*y

# 使用reduce()函式,對元組中的每一項進行計算,最後將結果返回

print reduce(multiply, (1, 2, 3, 4, 5, 6))

print reduce(multiply, (7, 8), 5)

結果:

720

280

第乙個結果為1*2*3*4*5*6連乘的結果。第二個結果為5*7*8的結果。

注意:使用reduce()函式進行累加計算時,必須為reduce()函式中的function_name()函式提供兩個引數,分別對應運算子兩側的運算元。

4)map函式

map()函式可以對多個序列中的每個元素執行相同的操作,並返回乙個與輸入序列長讀相同的列表。其中,每乙個元素都是對輸入序列中相應位置的元素轉換的結果。map()函式的語法格式如下:

map(function_name, sequence[, sequence, ...])

其中引數function_name表示自定義函式的名稱,實現對序列中每個元素的操作。sequence引數表示待處理的序列,該引數可以為多個。如果傳給map()的函式引數接受多個引數,那麼就可以給map()傳遞多個序列,如果這些傳進來的序列長度不一樣,那麼會在短的序列後面補none。函式引數還可以是none,這時就會用序列引數中的元素生成乙個元組的序列。下面是使用map()函式的例項:

def add_one(a):

return a + 1

def add_two(a, b):

return a + b

def add_three(a, b, c):

return a + b + c

a = [1, 2, 3, 4, 5]

b = [1, 2, 3, 4, 5]

c = [1, 2, 3, 4, 5]

result = map(add_one, a)

print result

result = map(add_two, a, b)

print result

result = map(add_three, a, b, c)

print result

結果:

[2, 3, 4, 5, 6]

[2, 4, 6, 8, 10]

[3, 6, 9, 12, 15]

菜鳥學python(02) 基礎筆記整理

兄弟連學python 02 基礎筆記整理 注釋的作用 增加可讀性,排查程式錯誤 兩種 或 或 ctrl 快捷鍵,快速用單行注釋注釋多行 注釋混用問題?單行有多行,多行不能有自己 python 語句 單行語句,塊 變數 可改變,用英文,數字不打頭,用 有意義,不能和系統衝突,區分大小寫 檢視系統關鍵字...

菜鳥學IT之IP基礎

it菜鳥,以後研究的方向是雲計算,從基礎的開始,這是第一篇博文。有不對的地方希望大家指正。ip是網路知識的基礎,今天就開始學習ip。ip位址是由32個二進位制數來表示,為了方便記憶,分成四段8位二進位制,每一段換算成乙個十進位制數,所以每個ip位址由4個十進位制數表示 此文討論的ip位址均為ipv4...

菜鳥學python文件 菜鳥學習python筆記

1.模組 三種呼叫方法 1.在vim寫的乙個python的檔案 運用import 匯入,就可以在互動模式的直接進行呼叫 2.呼叫模組裡面的某個函式 from 模組名字 in 函式名字 3.將模組名字變短進行呼叫 import 模組原名 as 新名字 2.基於python開發的東西存放目錄 usr l...