Python學習 第三節part1 關於函式

2022-07-17 08:51:10 字數 4425 閱讀 5597

一為何要用函式之不用函式的問題

#1、**的組織結構不清晰,可讀性差

#2、遇到重複的功能只能重複編寫實現**,**冗餘

#3、功能需要擴充套件時,需要找出所有實現該功能的地方修改之,無法統一管理且維護難度極大

二 函式是什麼

針對二中的問題,想象生活中的例子,修理工需要實現準備好工具箱裡面放好錘子,扳手,鉗子等工具,然後遇到錘釘子的場景,拿來錘子用就可以,而無需臨時再製造一把錘子。

修理工===>程式設計師

具備某一功能的工具===>函式

要想使用工具,需要事先準備好,然後拿來就用且可以重複使用

要想用函式,需要先定義,再使用

#

1、內建函式

為了方便我們的開發,針對一些簡單的功能,python直譯器已經為我們定義好了的函式即內建函式。對於內建函式,我們可以拿來就用而無需事先定義,如len(),sum(),max()

ps:我們將會在最後詳細介紹常用的內建函式。

#2、自定義函式

很明顯內建函式所能提供的功能是有限的,這就需要我們自己根據需求,事先定製好我們自己的函式來實現某種功能,以後,在遇到應用場景時,呼叫自定義的函式即可。例如

你可以定義乙個由自己想要功能的函式,以下是簡單的規則:

任何傳入引數和自變數必須放在圓括號中間。圓括號之間可以用於定義引數。

函式的第一行語句可以選擇性地使用文件字串—用於存放函式說明。

函式內容以冒號起始,並且縮排。

return [表示式]結束函式,選擇性地返回乙個值給呼叫方。不帶表示式的return相當於返回 none。

#語法

def函式名(引數1,引數2,引數3,...):

'''注釋

'''函式體

return

返回的值

#函式名要能反映其意義

例子:

def auth(user:str,password:str)->int:

'''auth function

:param user: 使用者名稱

:param password: 密碼

:return: 認證結果

'''if user == '

egon

'and password == '

123'

:

return 1

#print(auth.__annotations__) #

user=input('

使用者名稱》:

').strip()

pwd=input('

密碼》:

').strip()

res=auth(user,pwd)

print(res)

例項

函式呼叫

定義乙個函式只給了函式乙個名稱,指定了函式裡包含的引數,和**塊結構。

這個函式的基本結構完成以後,你可以通過另乙個函式呼叫執行,也可以直接從python提示符執行。

如下例項呼叫了printme()函式:

#

!/usr/bin/python

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

#定義函式

defprintme( str ):

"列印任何傳入的字串

"print

str;

return;

#呼叫函式

printme("

使用者自定義函式!");

printme(

"再次呼叫同一函式

");

以上例項輸出結果:

我要呼叫使用者自定義函式!再次呼叫同一函式

引數傳遞

以下是呼叫函式時可使用的正式引數型別:

return

語句return語句[表示式]退出函式,選擇性地向呼叫方返回乙個表示式。不帶引數值的return語句返回none。之前的例子都沒有示範如何返回數值,下例便告訴你怎麼做:

#!/usr/bin/python

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

#可寫函式說明

defsum( arg1, arg2 ):

#返回2個引數的和."

total = arg1 +arg2

print

"函式內 :

", total

return

total; #

呼叫sum函式

total = sum( 10, 20);

以上例項輸出結果:

函式內 : 30

課後練習

1、寫函式,,使用者傳入修改的檔名,與要修改的內容,執行函式,完成批了修改操作

import

osdef

file(file_name,content,now_content):

with open(file_name,"r

",encoding="

utf-8

") as f,\

open(

"file.swap

","w

",encoding="

utf-8

") as w:

for line in

f:

if content in

line:

line=line.replace(content,now_content)

w.write(line)

else

: w.write(line)

os.remove(file_name)

os.rename(

"file.swap

",file_name)

return

true

file(

"test

","yinxin

","shaomingzheng

") #

呼叫函式

2、寫函式,計算傳入字串中【數字】、【字母】、【空格] 以及 【其他】的個數

defcount(msg):

dic=

for i in

msg:

ifi.isdigit():

dic[

'int_res

'] += 1

elif

i.isalpha():

dic[

'str_res

'] += 1

elif

i.isspace():

dic[

'space

'] += 1

else

: dic[

'other

'] += 1

return

dicres=count("

yinxin123 @#$")

print

(res)

3、寫函式,判斷使用者傳入的物件(字串、列表、元組)長度是否大於5。

defnum(num):

if len(num) >5:

return

true

return

false

print(num([1,2,3,4]))

4、寫函式,檢查傳入列表的長度,如果大於2,那麼僅保留前兩個長度的內容,並將新內容返回給呼叫者。

defnum(res):

if len(res) >2:

res=res[:2]

return

res

return

false

print(num("12"

))5、寫函式,檢查獲取傳入列表或元組物件的所有奇數字索引對應的元素,並將其作為新列表返回給呼叫者。

defcheck(list_tuple):

return list_tuple[::2]

print(check([1,2,3,4,5,6,7,8]))

6、寫函式,檢查字典的每乙個value的長度,如果大於2,那麼僅保留前兩個長度的內容,並將新內容返回給呼叫者。

deffunc(dic):

d={}

for k,v in

dic.items():

if len(v) > 2:

d[k]=v[0:2]

return

dprint(func3())

Python學習筆記 第三節

算術運算子 就是我們常用的 兩個物件相加 也可以用來字串的連線 兩個數相減 得到的數可以是負值 兩個數做乘法運算,或者將乙個字串重複幾次 兩個數做除法運算,需要注意 在python2版本裡邊,兩個相除,得到的也是整數,如果想要得到浮點數,只要把其中乙個數變為浮點數就好 例程環境 python 3 冪...

python學習 GUI第三節

1.entry 輸入控制項 用於顯示簡單的文字內容 from tkinter import root tk e entry root e.pack padx 20,pady 20 mainloop 執行結果 然後再高階一點 from tkinter import root tk label root...

Python基礎第三節

引入io模組,用io.stringio 生成可變的新字串。示例 s abcde sio io.stringio s sio.getvalue 輸出 abcde sio.seek 5 輸出5 sio.write g 輸出1 sio.getvalue 輸出 abcdg 比較運算子 可連用,如 a 43 ...