日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

python123编写函数求和_Python基础之函数

發布時間:2024/10/5 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python123编写函数求和_Python基础之函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python基礎之函數

一、函數基礎

1、函數概念:

函數是指將一組語句的集合通過一個名字(函數名)封裝起來,要想執行這個函數,只需調用其函數名即可

2、函數的作用

(1)減少重復代碼

(2)使程序變的可擴展

(3)使程序變得易維護

3、語法定義def?sayhi(x):???????????????#函數名

’’’函數說明’’’

print("Hello,?I'mnobody!")

return?x????????????????????#函數返回值

sayhi()?????????????????????#調用函數

關鍵字說明:

def:創建函數

sayhi():函數名

print("Hello, I'm nobody!"):函數體

return():返回值

sayhi()?#調用函數

4、函數的執行過程

定義函數,在程序執行過程中,函數體不執行,只有當程序調用函數時,函數才會執行。

函數執行過程:def?f1():

print(123)

return?"111"???#在函數中,一旦執行return,函數執行過程立即終止

print(456)

r?=?f1()???????????#只有調用函數時,函數才會執行

print(r)???????????#打印函數返回值

5、函數的返回值

(1)返回值數量為0時,返回None

(2)返回值數量等于1時,返回object

(3)返回值數量大于1時,返回tupledeftest():

print("first")

#沒有返回值

deftest2():

print("second")

return?2??????????????????????#返回值數量為1時

deftest3():

print("three")

return3,"dayi123",{"age":18,'name':"yiliu"}????#返回值數量多個時

one?=test()

two?=test2()

three=?test3()

print(one)

print(two)

print(three)

二、函數的參數

1函數的基本參數

(1)、普通參數

1)形參:變量只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。因此,形參只在函數內部有效。函數調用結束返回主調用函數后則不能再使用該形參變量

2)實參:可以是常量、變量、表達式、函數等,無論實參是何種類型的值,在進行函數調用時,它們都必須有確定的值,以便把這些值傳送給形參。因此應預先用賦值,輸入等辦法使參數獲得確定值def?send(xxoo,content):???????????????????#xxoo、content為實參

print(xxoo,content)

print("發送郵件成功:",xxoo,content)

return?True

send(dayi,?is)???????????????????????????#dayi、is為形參

(2)、默認參數def?send(xxoo,content,xx="ok"):?????#默認參數必須放在參數列表最后,可以有多個默認參數

print(xxoo,content,xx)

print("發送郵件成功:",xxoo,content,xx)

return?True

send('dayi','is')???????????????????#如果沒有傳參、則傳遞默認參數

send('dayi','is','niuB')??????????????#如果傳遞參數,則返回結果為傳遞參數

(3)、制定參數

默認傳遞的參數是根據順序,制定參數,可以打亂參數的順序:def?send(xxoo,content):

print(xxoo,content)

print("發送郵件成功:",xxoo,content)

return?True

send(content='dayi',xxoo='is')?????#將’dayi’傳遞給conttent,將‘is’換遞給xxoo

2、函數的動態參數

(1)、動態參數:傳參時可以傳一個或任意多個參數

1)、傳參時加一個”*”

作用:會將傳的參數放入元組中、

應用場景:傳的參數有順序def?fl(*args):??????????#?行參中帶*則表示動態參數

print(args,type(args))

fl(11)

li?=?[22,"dayi","liu"]

fl(li)?????????????????#?把?"li"當做一個整體傳到元組里面

fl(*li)????????????????#加"*"把li中元素傳到元組里面

fl(li,12)

li2?=?"dayi123"

fl(li2)????????????????#不帶*,將li2整體傳進元組,帶"*",將li2中每個字符串分別傳進元組

fl(*li2)

2)、傳參時加兩個”*”

作用:會將傳的參數放入字典中

應用場景:傳的參數沒有順序def?f1(**args):

print(args,type(args))

f1(n1="dayi123",n2=24)?????????????#傳參時必須傳兩個,一個“KEY”一個“value”

dic?=?{'name':"dayi",'age':18}

f1(kk=dic)?????????????????????????#傳參是把字典當做一個整體傳進字典中

f1(**dic)??????????????????????????#傳參時將字典中的每一個值分別傳進字典中

3)、傳參時既有兩個”*”,又有一個”*”

作用:萬能參數,既可以傳一個”*”的參數,又可以傳”**”的參數ef?f1(*args,**kwargs):

print(args,type(args))

print(kwargs)

f1(1,2,3,name="dayi",age=24)

tup?=?(22,33,44,55)

dic?=?{'name':"dayi123",'age':23}

f1(*tup,**dic)

f1(yz=tup,cd=dic)

(2)、利用動態參數實現format功能s1?=?"i?am?{0},age{1}".format("dayi123",18)

print(s1)

s2?=?"i?am?{0},age?{1}".format(*["dayi123",24])????????#傳遞列表中的參數,前面必須加“*”

print(s2)

s3?=?"i?am?{name},age?{age}".format(name="dayi123",age=24)

print(s3)

dic?=?{'name':'dayi123',"age":24}

s4?=?"i?am?{name},age?{age}".format(**dic)??????????????#將字典中參數傳遞給s4,必須加“**”

print(s4)

(3)、函數傳參傳遞的是引用def?f1(a1):

a1.append(999)?????#?函數傳參傳遞的是引用

li?=?[11,22,33,44]

f1(li)

print(li)

3、全局變量與局部變量

全局變量針對所有作用域均可讀,局部變量只針對部分作用域可讀,全局變量聲明要用大寫,全局變量可以是列表、字典。全局變量可以通過global修改,如果全局變量是字典、列表,則可以修改,但不能重新賦值。NAME?=?"alex"????????????#全局變量,所有作用域都可讀,全局變量的聲明要大寫

#NAME?=?[123,456,789]?????#如果全局變量是列表字典,則可以修改,但不可重新賦值

def?fl():

age?=?18

global?NAME????????#修改全局變量,對全局變量重新賦值,需要先global

NAME?=?"123"????????#局部變量,只對當前作用于生效

print(age,NAME)

def?f2():

age?=?19

print(age,NAME)

fl()

f2()

定義的字符串、數字格式的全局變量不能再局部變量中直接修改,但定義的列表,字典等全局變量可在局部變量中直接修改:names=?["dayi",18,"boy"]

defchange_name():

names[0]?=?"liu"

print("inside?func",names)

print(names)

change_name()

print(names)

例:用函數實現登錄功能def?login(username,password):

f?=?open("db",'r')?????????????#打開db.txt文件,’r’代表讀取

for?line?in?f:

line_list?=?line.split("|")?#一行一行讀取,使用“|”分隔

if?line_list[0]?==?username?and?line_list[1]?==?password:

return?True

def?register(username,password):

f?=?open("db",'a')?????????????#打開db.txt文件,’a’代表追加

temp?=?"\n"?+?username?+?"|"?+?password

f.write(temp)???????????????????#向db.txt中寫入

f.close()???????????????????????#關閉并生效

def?main():

t?=?input("1:登錄;2:注冊")

if?t?==?"1":

user?=?input("請輸入用戶名:")

pwd?=?input("請輸入密碼:")

r?=?login(user,pwd)

if?r:

print("登錄成功")

else:

print("登錄失敗")

elif?t?==?"2":

user?=?input("請輸入用戶名:")

pwd?=?input("請輸入密碼:")

register(user,pwd)

main()

同時,新建db.txt文件,輸入:dayi123|dayi123

三、三元(三目)運算及lambda表達式

1、三元運算if?1?==1:

name=?"liu"

else:

name=?"sb"

#等同于:

name?=?"liu"?if?1?==?1?else?"sb"

2、lambda表達式(匿名函數)def?f1(a1,a2):

return?a1?+?a2?+?100

ret?=?f1(10,12)

print(ret)

#等同于

f2?=?lambda?a1,a2:?a1?+a2?+?100

ret2?=?f2(10,12)

print(ret2)

3、中括號中的條件判斷以及循環舉例:a?=?range(10)

print([i?for?i?in?a?if?i<5])

輸出結果為: [0, 1, 2, 3, 4]

四、遞歸

1、遞歸:

遞歸算法是一種直接或者間接地調用自身算法的過程。在計算機編寫程序中,遞歸算法對解決一大類問題是十分有效的,它往往使算法的描述簡潔而且易于理解。

2、遞歸算法特點:

(1)遞歸就是在過程或函數里調用自身。

(2)在使用遞歸策略時,必須有一個明確的遞歸結束條件,稱為遞歸出口。

(3)遞歸算法解題通常顯得很簡潔,但遞歸算法解題的運行效率較低。所以一般不提倡用遞歸算法設計程序。

(4)在遞歸調用的過程當中系統為每一層的返回點、局部量等開辟了棧來存儲。遞歸次數過多容易造成棧溢出等。所以一般不提倡用遞歸算法設計程序。

3、遞歸舉例——階乘def?func(num):

if?num?==?1:

return?1

return?num?*?func(num-1)

x?=?func(7)

print(x)

五.高階函數

變量可以指向函數,函數的參數能接收變量,那么一個函數就可以接收另一個函數作為參數,這種函數就稱之為高階函數。#!/usr/bin/env?python

#?Author:dayi123

def?fuc(a,b,f):

return?f(a)+f(b)?????#將a、b的值交給函數f處理后求和再返回

add?=?fuc(7,-10,abs)??????#將內置函數abs傳遞給f

print(add)

總結

以上是生活随笔為你收集整理的python123编写函数求和_Python基础之函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。