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

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

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

前言

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

函數含義

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

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

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

簡而言之,函數就是定義好的且可以重復調用的結構化語句塊。函數名稱唯一,可接收參數,并且根據需要返回給調用者相應的結果(值),或不返回值。

函數定義

在Python中定義函數的主要規則如下:

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

概括起來,有四種類型的函數:

  • 無參數無返回值型函數;
  • 有參數無返回值型函數;
  • 無參數有返回值型函數;
  • 有參數有返回值型函數。

函數定義的語法格式如下:

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

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

無參無返回值型函數

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

代碼顯而易見,定義中形參,調用時沒有實參,語句塊中也沒有return語句。該結構只是調用print()函數來顯示所需的消息。在主程序中調用這樣一個函數是一個相當簡單直接,如下所示:

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

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

運行程序后輸出結果為:

Hello world

有參無返回值型函數

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

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

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

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

運行程序,結果類似如下:

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

無參有返回值型函數

第三種類型為不接受參數但有返回數據的函數。重要的是要記住,因為這種類型的函數返回的一個值給調用代碼,這個值必須在被使用或處理之前賦值給一個變量。示例如下:

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

# 主程序調用函數并顯示輸入結果
x = returnFloatNumber()
print('輸入的數字為:', x)

運行程序結果類似如下:

輸入一個數字,其將返回給主程序: 5.7
輸入的數字為:: 5.7

 有參有返回值型函數

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

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

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

# 調用函數計算倆個數字和
addNumbers = calculateSum(num1, num2)

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

運行程序結果類似如下:

輸入第一個數字: 3
輸入第二個數字: 5
計算兩個數字和...
兩個數字和為:: 8.0

 函數參數傳遞方式

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

概要來說,函數參數傳遞:

其一,按值方式:參數是原始變量的副本,保持副本且不改變原始值;

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

按值調用/傳遞

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

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

示例代碼如下:

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

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

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

# 調用'checkParameterID'函數
checkParameterID(x)

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

運行輸出結果類似如下:

調用checkParameterID函數之前x的值是 10
其id為 2570870194704
在checkParameterID函數內x值改變之前其值為 10
其id 為 2570870194704
checkParameterID中x的值改變后為 20
其id為 2570870195024
調用checkParameterID函數后x的值為 10
其id為 2570870194704

按引用調用/傳遞

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

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

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

# 調用函數'updateList'
print('調用函數updateList')
updateList(x)
print('調用updateList函數后x的內容為:', x)

運行程序輸出結果類似如下:

在調用updateList函數之前,x的內容是: [1, 2, 3, 4]
調用函數updateList
調用updateList函數后x的內容為: [1, 2, 3, 4, 5]

本文小結

本期內容介紹了函數的基本內容和實現語法,以及參數傳遞、有無參數和返回值的函數形式以及函數調用/傳遞的實現。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2022-11-07 09:02:13

Python編程位置

2025-01-17 10:52:26

定義函數編程Python

2014-10-30 16:12:55

編程技術算法

2014-10-30 16:34:28

編程技術算法

2014-10-30 16:41:14

編程技術算法

2023-07-06 08:31:50

Python對象編程

2009-10-16 13:08:40

VB自定義類型參數

2023-11-17 14:10:08

C++函數

2023-12-11 18:18:24

Python編程線程

2024-01-17 06:23:35

SwiftTypeScript定義函數

2023-03-29 23:23:00

MyBatis參數框架

2009-12-10 11:02:44

PHP函數eval()

2025-04-02 12:00:00

開發日志記錄Python

2025-02-12 10:51:51

2020-09-24 10:57:12

編程函數式前端

2012-02-21 14:04:15

Java

2023-08-04 09:43:16

Socket編程Python

2024-06-12 00:00:01

Java函數式接口

2023-11-23 12:47:03

C++函數參數

2024-02-27 08:22:56

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 久久伊人免费视频 | 成年人精品视频在线观看 | 日本午夜免费福利视频 | 久久99精品国产 | 亚洲香蕉在线视频 | 嫩草国产 | 亚洲精品一 | 国产精品二区三区 | 国产成人免费在线 | 精品久久久一区二区 | 蜜月aⅴ免费一区二区三区 99re在线视频 | 视频一区在线观看 | 中文字幕视频在线观看 | 免费国产视频 | 国产在线一区二区三区 | 女同久久另类99精品国产 | 欧美性影院 | 极情综合网| 欧美三级网站 | 日韩精品一区二区三区免费视频 | 日本福利视频免费观看 | 亚洲电影第1页 | a级黄色网 | 亚洲精品三级 | 亚洲精品免费在线 | 天天摸天天看 | 91国语清晰打电话对白 | 一本色道精品久久一区二区三区 | 久国产视频 | 蜜桃av一区二区三区 | 欧美在线a| 亚洲国产一区二区三区 | 丝袜一区二区三区 | 91啪亚洲精品 | 国产一级片免费看 | 亚洲精品黄色 | 日韩伦理一区二区 | 国内精品久久精品 | 亚洲精品一区二三区不卡 | 亚洲精品自在在线观看 | 91精品一区|