網站首頁 編程語言 正文
1、Python的函數參數的類型
- 必傳參數:調用函數時必須傳入的參數,函數定義時只定義參數名
- 關鍵字參數:傳入時以函數的參數名值對的方式傳入
- 默認參數:函數定義時為參數默認設置一個值,調用時不傳輸參數即以默認值處理
- 不定長參數:以*修飾或者**修飾的參數;*修飾的參數是一個元組(tuple),**修飾的參數必須是字典(dict),通常寫作*args或者**args
2、Python的必傳參數
- 傳入的參數個數必須與形參的數量一致
# coding:utf-8
# Author:YangXiaoPeng
def demo01(a,b):
print(a, type(a))
print(b, type(b))
# demo01(1) #TypeError missing 1 required positional argument: 'b' 缺少一個未知的參數,demo01必須傳2個參數
# demo01(1, 2, 3) #TypeError demo01() takes 2 positional arguments but 3 were given, demo01函數有2個位置參數,但是接收到了3個;
# 必傳參數 : 調用函數時必須傳入的參數,函數定義時只定義參數名
# 傳入的參數個數必須與形參的數量一致
demo01(1, 2) # yes
demo01(1, [1, 2]) # yes
demo01([2, 3], (1, 2)) # yes
demo01(1, {2, 3, 4}) # yes
demo01(2, {"code":'1001', "name":"zhang", "age":18}) # yes
3、關鍵字參數
- 以參數名和參數值的關聯在一起的方式進行傳參,鍵值對的模式,參數名為鍵。
# coding:utf-8
# Author:YangXiaoPeng
def demo01(a,b):
print(a, type(a), end="__")
print(b, type(b))
# 第一個關鍵字出入的參數位置之前的參數比遜選擇關鍵字傳參;如下面的示例中,第一個關鍵字傳參的變量是a,a在函數定義的第二個位置,那么第二個位置之前的參數都必須以關鍵字傳參的形式傳參。
# demo01(1, a=2) # demo01() got multiple values for argument 'a'
demo01(a=1, b=2) # yes
demo01(1, b=2) # yes
demo01(b=1, a=2) # yes
demo01(b=1, a=[1, 2]) # yes
demo01(b=[2, 3], a=(1, 2)) # yes
demo01(b=1, a={2, 3, 4}) # yes
demo01(b=2, a={"code":'1001', "name":"zhang", "age":18}) # yes
4、默認參數
- 調用函數時不傳入參數an默認值處理,傳入時按傳入的參數值處理
# coding:utf-8
# Author:YangXiaoPeng
## 默認參數
def demo02(City = "LongNan"):
print("City是默認參數,默認值是:中國,當前值是:", City)
# 不傳入參數
demo02()
# 傳入參數
demo02("Beijing")
5、不定長參數
- 傳入的參數會生成一個元組類型的變量供函數內部使用
# coding:utf-8
# Author:YangXiaoPeng
## 不定長參數
def demo03(*args):
print(args,type(args))
# 傳入的參數會生成一個元組類型的變量供函數內部使用
demo03(1)
demo03("code")
demo03(1,"code")
- 傳入的參數不能少于必傳參數的個數
- *args 后面的形參,必須以關鍵字參數進行傳參
# coding:utf-8
# Author:YangXiaoPeng
# *args 后面的形參,必須以關鍵字參數進行傳參,
def demo04(a, b, *args,c):
print("a傳入的參數值是:{},b傳入的參數值是:{}, args傳入的參數是:{}, c出入的參數是:{}".format(a, b, args,c))
# 傳入的參數不能少于必傳參數的個數,a,b,c三個為必傳參數
# demo04(1, 2) # TypeError
# demo04(1, 2, 3) # TypeError
demo04(1, 2, c=3)
- *args 之前的參數只能按位置傳參,不可以關鍵字傳參
- 傳入的參數個數比必傳參數多時,首先給必傳參數按位置賦值,然后將剩余的參數生成一個元組傳遞給args
- **修飾的參數必須以關鍵字的參數方式傳參,Python解釋器會將傳入的關鍵字和關鍵字的值生成一個字典供函數內部使用
# coding:utf-8
# Author:YangXiaoPeng
def demo05(**kwargs):
print("kwargs傳入的參數是:{}".format(kwargs),type(kwargs))
kwargs = {"code":'1002', "name":"zhang"}
# demo05(kwargs) # TypeError
# **修飾的參數必須以關鍵字的參數方式傳參,Python解釋器會將傳入的關鍵字和關鍵字的值生成一個字典供函數內部使用
demo05(**kwargs) # kwargs傳入的參數是:{'code': '1002', 'name': 'zhang'} <class 'dict'>
demo05(code='1002',name="zhang") # kwargs傳入的參數是:{'code': '1002', 'name': 'zhang'} <class 'dict'>
- **修飾的參數必須是最后一個
# coding:utf-8
# Author:YangXiaoPeng
# **修飾的參數必須是最后一個
"""
# SyntaxError: invalid syntax
def demo06(a, b, *args, c, **kwargs, d):
pass
"""
def demo06(a, b, *args, c, **kwargs):
print("a傳入的參數值是:{},b傳入的參數值是:{}, args傳入的參數是:{}".format(a, b, args),end='')
print(",c傳入的參數是:{},kwargs傳入的參數是:{}".format(c,kwargs))
demo06(1, 2, 3, 4, 5, c=3, code='1002', name="zhang", d=3)
原文鏈接:https://blog.51cto.com/u_12907475/5458644
相關推薦
- 2024-07-15 Postman:Body類型中的x-www-from-urlencoded參數可以接受GET請求嗎?
- 2022-12-26 python3中的函數與參數及空值問題_python
- 2022-08-04 基于Python實現二維圖像雙線性插值_python
- 2022-06-26 python數據處理之Pandas類型轉換的實現_python
- 2022-03-14 怎么去掉Starting new HTTP connection 的提示
- 2022-06-23 Python實現希爾排序,歸并排序和桶排序的示例代碼_python
- 2023-05-03 C++11學習之包裝器解析_C 語言
- 2022-10-23 Android實現底部滾輪式選擇彈跳框_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支