一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - Python - 淺談Python中的函數(shù)傳遞問題

淺談Python中的函數(shù)傳遞問題

2022-03-03 00:23雷學(xué)委 Python

這篇文章主要為大家介紹了Python函數(shù)傳遞問題,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

函數(shù)參數(shù)如何傳遞

key-value方式傳遞參數(shù):

下面是非常常見的傳遞方式,參數(shù)名寫直白,寫死了:

def show_info(name, title):
  print("姓名為:",name)
  print("職稱為:",title)

我們在使用的時候可以用以下的方式:

  1. show_info('雷學(xué)委''大學(xué)生Python學(xué)習(xí)社區(qū)長'
  2. show_info(name='雷學(xué)委', title='持續(xù)學(xué)習(xí)協(xié)會會長'

可以寫成這樣,使用兩個*,這樣非常靈活,但是缺點(diǎn)也是明顯的(結(jié)構(gòu)靈活有時候需要判斷是否漏傳,直接取容易出錯)

  1. def show_info_v2(**kv_dict): 
  2.   print("姓名為:", kv_dict['name']) 
  3.   print("職稱為:", kv_dict['title']) 
  4. show_info_v2(name='雷學(xué)委', title='大學(xué)生Python學(xué)習(xí)社區(qū)長'

下面是效果,看起來一樣的。

淺談Python中的函數(shù)傳遞問題

動態(tài)長度參數(shù)傳遞

通常使用*加參數(shù)名。

  1. #!/usr/bin/env python 
  2. # -*- coding: utf-8 -*- 
  3. # @Time : 2021/10/24 11:39 下午 
  4. # @Author : LeiXueWei 
  5. # @CSDN/Juejin/Wechat: 雷學(xué)委 
  6. # @XueWeiTag: CodingDemo 
  7. # @File : func_call.py 
  8. # @Project : hello 
  9. def show_info(name, title): 
  10.   print("姓名為:", name) 
  11.   print("職稱為:", title) 
  12. show_info('雷學(xué)委''大學(xué)生Python學(xué)習(xí)社區(qū)區(qū)長'
  13. show_info(name='雷學(xué)委', title='持續(xù)學(xué)習(xí)協(xié)會會長'
  14. def show_info_v2(name, title, *info): 
  15.   print("姓名為:", name) 
  16.   print("職稱為:", title) 
  17.   print("其他評價:", info) 
  18. show_info_v2('雷學(xué)委''大學(xué)生Python學(xué)習(xí)社區(qū)區(qū)長'"熱愛技術(shù)""熱愛生活"

運(yùn)行效果如下:

淺談Python中的函數(shù)傳遞問題

 

參數(shù)是否會被函數(shù)攥改?

我們看看下面的程序即可:

  1. #!/usr/bin/env python 
  2. # -*- coding: utf-8 -*- 
  3. # @Time : 2021/10/24 11:39 下午 
  4. # @Author : LeiXueWei 
  5. # @CSDN/Juejin/Wechat: 雷學(xué)委 
  6. # @XueWeiTag: CodingDemo 
  7. # @File : func_call.py 
  8. # @Project : hello 
  9. def compute_v1(list): 
  10.   sum = 0 
  11.   for x in list: 
  12.       sum += x 
  13.   list = list + [sum] 
  14.   print("新地址:", id(list)) 
  15.   return sum 
  16. def compute_v2(list): 
  17.   sum = 0 
  18.   for x in list: 
  19.       sum += x 
  20.   list[0] = list[0] * 100 
  21.   return sum 
  22. _list = [1, 2, 3, 4, 5] 
  23. print("調(diào)用計(jì)算函數(shù)v1之前:", _list) 
  24. print("調(diào)用計(jì)算函數(shù)v1之前內(nèi)存地址:", id(_list)) 
  25. print(compute_v1(_list)) 
  26. print("調(diào)用計(jì)算函數(shù)v1之后:", _list) 
  27. print("調(diào)用計(jì)算函數(shù)v1之后內(nèi)存地址:", id(_list)) 
  28. _list = [1, 2, 3, 4, 5] 
  29. print("調(diào)用計(jì)算函數(shù)v2之前:", _list) 
  30. print("調(diào)用計(jì)算函數(shù)v2之前內(nèi)存地址:", id(_list)) 
  31. print(compute_v2(_list)) 
  32. print("調(diào)用計(jì)算函數(shù)v2之后:", _list) 
  33. print("調(diào)用計(jì)算函數(shù)v2之后內(nèi)存地址:", id(_list)) 

這里兩個compute函數(shù),一個修改參數(shù)引用地址,一個并沒有修改參數(shù)引用而是修改了引用內(nèi)存空間的關(guān)聯(lián)地址(一個變量)的值。

可以說它們都成功了。但是外面的_list 的地址是任何時候都不會被修改的,除非賦值新地址(也就是在調(diào)用v2之前重新復(fù)制那次)

下面是運(yùn)行結(jié)果:

淺談Python中的函數(shù)傳遞問題

 

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注服務(wù)器之家的更多內(nèi)容!

原文鏈接:https://blog.csdn.net/geeklevin/article/details/121368864

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 婷婷色在线 | 99国产精品久久久久久久... | 久99视频精品免费观看福利 | 男人影院天堂网址 | 欧美老人与小伙子性生交 | 亚洲国产精品一在线观看 | 欧美日韩一区二区三区在线观看 | 午夜AV内射一区二区三区红桃视 | mm在线 | 操比图片 | 草草影院在线 | 性奶乳妇 | 91在线 在线播放 | 金莲一级淫片aaaaaa | 成人福利免费在线观看 | 精品欧美男同同性videos | 国产成人啪精品视频站午夜 | 亚洲精品6久久久久中文字幕 | 男人的天堂久久爱 | 纲手被强喷水羞羞漫画 | 国产小视频网站 | 国产美女下面流出白浆视频 | tube性睡觉hd| 日韩欧美a | 国产亚洲精品自在线亚洲情侣 | 日本人护士免费xxxx视频 | 我的男友是消防员在线观看 | 国产精品va在线观看无 | 天天视频官网天天视频在线 | 精品久久免费观看 | 猫咪maomiav永久网址 | 国产美女做爰免费视频网址 | 欧洲美女人牲交一级毛片 | 色综合色狠狠天天综合色 | 久久精品国产免费播高清无卡 | 污漫日本E同人 | 久久一本岛在免费线观看2020 | 非洲黑人bbwbbwbbw | 精品亚洲麻豆1区2区3区 | 国产伦码精品一区二区三区 | 国产一卡二卡3卡4卡四卡在线视频 |