成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python編程:輕松掌握函數(shù)定義、類型及其參數(shù)傳遞方式

開發(fā) 前端
函數(shù)(function)是執(zhí)行特定任務(wù)的語句塊,是允許程序員重用的部分代碼,其促進(jìn)了軟件程序的模塊化概念。這種方法背后的主要思想是將一個(gè)大的代碼塊劃分為更小的獨(dú)立部分,也因此更易于管理的子塊。

前言

本文帶你輕松理解并掌握Python語言中的核心特性——函數(shù):定義語法以及函數(shù)形式,并介紹函數(shù)的參數(shù)傳遞的兩種方式。

函數(shù)含義

函數(shù)(function)是執(zhí)行特定任務(wù)的語句塊,是允許程序員重用的部分代碼,其促進(jìn)了軟件程序的模塊化概念。這種方法背后的主要思想是將一個(gè)大的代碼塊劃分為更小的獨(dú)立部分,也因此更易于管理的子塊。Python中有兩種類型的函數(shù):

內(nèi)置函數(shù)(Build-in):編程時(shí)可以在程序中直接使用這些函數(shù)而無需定義它們。這種類型的函數(shù)在一開的始學(xué)習(xí)中經(jīng)常使用了(例如,print()、input()、sum()等)。

用戶定義函數(shù)(User-defined):Python允許程序員創(chuàng)建自己的函數(shù)。接下來將重點(diǎn)介紹這種特定的函數(shù)類型。

簡(jiǎn)而言之,函數(shù)就是定義好的且可以重復(fù)調(diào)用的結(jié)構(gòu)化語句塊。函數(shù)名稱唯一,可接收參數(shù),并且根據(jù)需要返回給調(diào)用者相應(yīng)的結(jié)果(值),或不返回值。

函數(shù)定義

在Python中定義函數(shù)的主要規(guī)則如下:

  • 函數(shù)塊以關(guān)鍵字def開始,后面跟著函數(shù)名和括號(hào)。注意,由于Python是區(qū)分大小寫的,所以必須使用def而不是Def。
  • 與變量名類似,函數(shù)名可以包含字母或數(shù)字,但不包含空格或特殊字符,且不能以數(shù)字開頭。
  • 可選的輸入?yún)?shù)(稱為arguments)應(yīng)放在括號(hào)內(nèi)——參數(shù)數(shù)量和類型根據(jù)需要來。
  • 函數(shù)名后跟冒號(hào),通常函數(shù)中的語句塊從冒號(hào)后換行開始并縮進(jìn)。
  • 返回?cái)?shù)據(jù)的函數(shù)必須在其代碼塊中包含關(guān)鍵字return。

概括起來,有四種類型的函數(shù):

  • 無參數(shù)無返回值型函數(shù);
  • 有參數(shù)無返回值型函數(shù);
  • 無參數(shù)有返回值型函數(shù);
  • 有參數(shù)有返回值型函數(shù)。

函數(shù)定義的語法格式如下:

def functionName (var1, var2, … etc.):
Statements

根據(jù)實(shí)參的存在與否以及輸入和/或返回值的存在情況,函數(shù)可以分為上面的四種可能的類型。下面將分別介紹。

無參無返回值型函數(shù)

在這種類型中,函數(shù)不接受變量作為參數(shù),也不返回任何數(shù)據(jù)。比如下面的腳本演示即為這種函數(shù),它只在屏幕上打印預(yù)定義的字符串。

代碼顯而易見,定義中形參,調(diào)用時(shí)沒有實(shí)參,語句塊中也沒有return語句。該結(jié)構(gòu)只是調(diào)用print()函數(shù)來顯示所需的消息。在主程序中調(diào)用這樣一個(gè)函數(shù)是一個(gè)相當(dāng)簡(jiǎn)單直接,如下所示:

# 定義一個(gè)既無參數(shù)也無返回值的函數(shù)
def printSomething():
print('Hello world')

# 在主程序中直接調(diào)用
printSomething()

運(yùn)行程序后輸出結(jié)果為:

Hello world

有參無返回值型函數(shù)

另一種類型的函數(shù)接受變量作為參數(shù),但不返回任何數(shù)據(jù)。在下面的示例中,通過聲明的名稱來調(diào)用函數(shù),同時(shí)在所調(diào)用的函數(shù)括號(hào)中包含一些值。這些值被傳遞給函數(shù)的主體使用,可以被視為普通變量:

# 定義接收參數(shù)但無返回值的函數(shù)
def printMyName(fName, lName):
print('Your name is:', fName, lName)

# 提示用戶輸入姓名
firstName = input('Enter your first name: ')
lastName = input('Enter your last name: ')

# 在主程序中調(diào)用所定義的函數(shù)
printMyName(firstName, lastName)

運(yùn)行程序,結(jié)果類似如下:

Enter your first name:Solo
Enter your last name: Cui
Your name is: Solo Cui

無參有返回值型函數(shù)

第三種類型為不接受參數(shù)但有返回?cái)?shù)據(jù)的函數(shù)。重要的是要記住,因?yàn)檫@種類型的函數(shù)返回的一個(gè)值給調(diào)用代碼,這個(gè)值必須在被使用或處理之前賦值給一個(gè)變量。示例如下:

# 定義無參數(shù)但有返回值的函數(shù)
def returnFloatNumber():
inputFloat = float(input('輸入一個(gè)數(shù)字,其將返回給主程序:'))
return inputFloat

# 主程序調(diào)用函數(shù)并顯示輸入結(jié)果
x = returnFloatNumber()
print('輸入的數(shù)字為:', x)

運(yùn)行程序結(jié)果類似如下:

輸入一個(gè)數(shù)字,其將返回給主程序: 5.7
輸入的數(shù)字為:: 5.7

 有參有返回值型函數(shù)

這種類型函數(shù)既接受參數(shù),又將值返回給調(diào)用代碼。情況下面示例。在這種情況下,函數(shù)的調(diào)用必須包含一個(gè)參數(shù)列表,并將返回值賦給一個(gè)特定的變量以供以后使用:

# 有參有返回值函數(shù)
def calculateSum(number1, number2):
print('計(jì)算兩個(gè)數(shù)字和.')
return(number1 + number2)

# 接受用戶輸入的兩個(gè)數(shù)字
num1 = float(input('輸入第一個(gè)數(shù)字: '))
num2 = float(input('輸入第二個(gè)數(shù)字: '))

# 調(diào)用函數(shù)計(jì)算倆個(gè)數(shù)字和
addNumbers = calculateSum(num1, num2)

# 輸出兩個(gè)數(shù)字和
print('兩個(gè)數(shù)字和為:', addNumbers)

運(yùn)行程序結(jié)果類似如下:

輸入第一個(gè)數(shù)字: 3
輸入第二個(gè)數(shù)字: 5
計(jì)算兩個(gè)數(shù)字和...
兩個(gè)數(shù)字和為:: 8.0

 函數(shù)參數(shù)傳遞方式

有兩種不同的方法用來給函數(shù)傳遞參數(shù)。確定選擇兩者的哪個(gè)方法應(yīng)取決于原來變量的值是否可在函數(shù)內(nèi)更改。將參數(shù)值傳遞給函數(shù)有兩種方法,通常被稱為按值調(diào)用/傳遞(call/pass by value)和按引用調(diào)用/傳遞(call/pass by reference)。

概要來說,函數(shù)參數(shù)傳遞:

其一,按值方式:參數(shù)是原始變量的副本,保持副本且不改變?cè)贾担?/p>

其二,按引用方式:改變直接作用于原始變量,因此也就改變了原始值。

按值調(diào)用/傳遞

在這種情況下,實(shí)參(形參)的值作為原始變量的副本處理。因此,當(dāng)程序控制返回給調(diào)用者時(shí),調(diào)用者作用域中的原始變量將保持不變。

在Python中,如果將不可變參數(shù)(例如,整數(shù)和字符串)傳遞給函數(shù),通常的做法是按值調(diào)用/傳遞參數(shù)。下面的示例通過介紹id()函數(shù)說明了這種情況。它接受一個(gè)對(duì)象作為參數(shù)(即id(object)),并返回這個(gè)特定對(duì)象的標(biāo)識(shí)。Id()返回值是一個(gè)整數(shù),它在對(duì)象的生命周期內(nèi)是惟一的和永久的。如示例所示,在調(diào)用checkParamemterID函數(shù)之前,變量x的id為4564813232。需要注意的是,只要x的值沒有更新,x的id在函數(shù)中就不會(huì)改變。但是,一旦該值更新為20,其對(duì)應(yīng)的id將更改為4564813552。需要注意的最重要的一點(diǎn)是,x的id在調(diào)用函數(shù)后不會(huì)改變,它的原始值保持不變(4564813232)。這意味著對(duì)x值的更改應(yīng)用于變量的副本,而不是調(diào)用者作用域內(nèi)的原始變量。

示例代碼如下:

#按值傳遞參數(shù)
# 定義函數(shù)'checkParameterID',帶參且按值傳遞
def checkParameterID(x):
print('在checkParameterID函數(shù)內(nèi)x值改變之前其值為 ', x, '\n其id 為', id(x))
# 在函數(shù)范圍內(nèi)改變參數(shù)x的值
x = 20
print('checkParameterID中x的值改變后為', x, '\n 其id為', id(x))

# 在主程序聲明變量x并賦予初始值
x = 10

print('調(diào)用checkParameterID函數(shù)之前x的值是', x, '\n 其id為', id(x))

# 調(diào)用'checkParameterID'函數(shù)
checkParameterID(x)

# 函數(shù)調(diào)用后在主程序中顯示關(guān)于'x'的信息
print('調(diào)用checkParameterID函數(shù)后x的值為', x, '\n 其id為', id(x))

運(yùn)行輸出結(jié)果類似如下:

調(diào)用checkParameterID函數(shù)之前x的值是 10
其id為 2570870194704
在checkParameterID函數(shù)內(nèi)x值改變之前其值為 10
其id 為 2570870194704
checkParameterID中x的值改變后為 20
其id為 2570870195024
調(diào)用checkParameterID函數(shù)后x的值為 10
其id為 2570870194704

按引用調(diào)用/傳遞

在這種情況下,函數(shù)獲取實(shí)參(即原始變量)的引用,而不是它的副本。如果函數(shù)內(nèi)發(fā)生更改,則調(diào)用者作用域中原始變量的值也將被修改。在Python中,如果可變參數(shù)(如列表)傳遞給函數(shù),則調(diào)用/傳遞是通過引用進(jìn)行的。如下所示,updateList將值5追加到名為y的列表中。即原始可變變量x的值發(fā)生了變化,這證明函數(shù)按引用調(diào)用/傳遞參數(shù)的特征。示例代碼如下:

# 定義函數(shù)'upDateList' 其改變列表內(nèi)的值
def updateList(y):
y = y.append(5)
return y

# 聲明列表'x' 有四個(gè)元素值
x = [1, 2, 3, 4]
print('在調(diào)用updateList函數(shù)之前,x的內(nèi)容是:', x)

# 調(diào)用函數(shù)'updateList'
print('調(diào)用函數(shù)updateList')
updateList(x)
print('調(diào)用updateList函數(shù)后x的內(nèi)容為:', x)

運(yùn)行程序輸出結(jié)果類似如下:

在調(diào)用updateList函數(shù)之前,x的內(nèi)容是: [1, 2, 3, 4]
調(diào)用函數(shù)updateList
調(diào)用updateList函數(shù)后x的內(nèi)容為: [1, 2, 3, 4, 5]

本文小結(jié)

本期內(nèi)容介紹了函數(shù)的基本內(nèi)容和實(shí)現(xiàn)語法,以及參數(shù)傳遞、有無參數(shù)和返回值的函數(shù)形式以及函數(shù)調(diào)用/傳遞的實(shí)現(xiàn)。

責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2022-11-07 09:02:13

Python編程位置

2025-01-17 10:52:26

定義函數(shù)編程Python

2014-10-30 16:12:55

編程技術(shù)算法

2014-10-30 16:34:28

編程技術(shù)算法

2014-10-30 16:41:14

編程技術(shù)算法

2023-07-06 08:31:50

Python對(duì)象編程

2023-11-17 14:10:08

C++函數(shù)

2009-10-16 13:08:40

VB自定義類型參數(shù)

2024-01-17 06:23:35

SwiftTypeScript定義函數(shù)

2025-04-02 12:00:00

開發(fā)日志記錄Python

2023-12-11 18:18:24

Python編程線程

2023-03-29 23:23:00

MyBatis參數(shù)框架

2025-02-12 10:51:51

2009-12-10 11:02:44

PHP函數(shù)eval()

2020-09-24 10:57:12

編程函數(shù)式前端

2012-02-21 14:04:15

Java

2023-08-04 09:43:16

Socket編程Python

2024-06-12 00:00:01

Java函數(shù)式接口

2023-11-23 12:47:03

C++函數(shù)參數(shù)

2024-02-27 08:22:56

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 久久久久久国产一区二区三区 | 精品三区| 一区二区中文字幕 | 天堂一区在线观看 | www.日韩| 久久久久久久国产精品视频 | 久久久久久久久久久国产 | 久久四虎| 一区二区三区精品在线视频 | 好姑娘影视在线观看高清 | 久久精品一区 | 看特级黄色片 | 91麻豆精品国产91久久久更新资源速度超快 | 黄色精品 | 久久久久久久久久久爱 | 国产中文字幕在线观看 | 亚洲精品福利在线 | 日韩电影免费在线观看中文字幕 | 欧洲亚洲精品久久久久 | 国产色99精品9i | 亚洲视频www| 精品日韩在线观看 | 精品香蕉一区二区三区 | 国产成人福利 | 国产成人免费视频网站高清观看视频 | 日韩影音| 高清国产午夜精品久久久久久 | 日韩精品成人 | 欧美日韩网站 | 五月天婷婷久久 | 91精品久久久久久久久 | 69福利影院| 亚洲国产精品99久久久久久久久 | 精品久久久久一区二区国产 | 一区二区三区高清 | 精品九九久久 | 超碰欧美 | 中文字幕中文字幕 | 久久天天综合 | 日日干夜夜操 | 日韩高清中文字幕 |