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

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

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

服務器之家 - 腳本之家 - Python - 淺談Python中的函數傳遞問題

淺談Python中的函數傳遞問題

2022-03-03 00:23雷學委 Python

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

函數參數如何傳遞

key-value方式傳遞參數:

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

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

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

  1. show_info('雷學委''大學生Python學習社區長'
  2. show_info(name='雷學委', title='持續學習協會會長'

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

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

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

淺談Python中的函數傳遞問題

動態長度參數傳遞

通常使用*加參數名。

  1. #!/usr/bin/env python 
  2. # -*- coding: utf-8 -*- 
  3. # @Time : 2021/10/24 11:39 下午 
  4. # @Author : LeiXueWei 
  5. # @CSDN/Juejin/Wechat: 雷學委 
  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('雷學委''大學生Python學習社區區長'
  13. show_info(name='雷學委', title='持續學習協會會長'
  14. def show_info_v2(name, title, *info): 
  15.   print("姓名為:", name) 
  16.   print("職稱為:", title) 
  17.   print("其他評價:", info) 
  18. show_info_v2('雷學委''大學生Python學習社區區長'"熱愛技術""熱愛生活"

運行效果如下:

淺談Python中的函數傳遞問題

 

參數是否會被函數攥改?

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

  1. #!/usr/bin/env python 
  2. # -*- coding: utf-8 -*- 
  3. # @Time : 2021/10/24 11:39 下午 
  4. # @Author : LeiXueWei 
  5. # @CSDN/Juejin/Wechat: 雷學委 
  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("調用計算函數v1之前:", _list) 
  24. print("調用計算函數v1之前內存地址:", id(_list)) 
  25. print(compute_v1(_list)) 
  26. print("調用計算函數v1之后:", _list) 
  27. print("調用計算函數v1之后內存地址:", id(_list)) 
  28. _list = [1, 2, 3, 4, 5] 
  29. print("調用計算函數v2之前:", _list) 
  30. print("調用計算函數v2之前內存地址:", id(_list)) 
  31. print(compute_v2(_list)) 
  32. print("調用計算函數v2之后:", _list) 
  33. print("調用計算函數v2之后內存地址:", id(_list)) 

這里兩個compute函數,一個修改參數引用地址,一個并沒有修改參數引用而是修改了引用內存空間的關聯地址(一個變量)的值。

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

下面是運行結果:

淺談Python中的函數傳遞問題

 

總結

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關注服務器之家的更多內容!

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 深夜福利入口 | 国产黄频在线观看高清免费 | 国产精品免费观在线 | 国产亚洲综合成人91精品 | 天天视频官网天天视频在线 | 亚洲第一天堂网 | 精品视频在线免费播放 | 国产另类视频一区二区三区 | 韩国黄色网址 | 北条麻妃黑人正在播放 | 日本不卡高清免费v日本 | 免费刷10000名片赞网站 | 亚洲欧美视频在线播放 | 欧美大b| 久久国产综合精品欧美 | 白丝校花被扒开双腿喷水小说 | 亚洲琪琪 | 亚州在线 | 精品国产福利一区二区在线 | 白丝爆动漫羞羞动漫网站 | 国产黑丝一区 | 天天视频官网天天视频在线 | 国产精品久久久久不卡绿巨人 | 青青草99热久久 | 国产有码在线 | 波多野结衣178部中文字幕 | 亚洲国产中文字幕在线视频综合 | 午夜私人影院在线观看 | 美女扒开肌肌让男人桶 | 国产大乳美女挤奶视频 | 国产成人啪精品午夜在线播放 | 欧美二区三区 | 67194在线免费观看 | 五月天视频网 | 国产精品亚洲一区二区 | 欧美乱理伦另类视频 | 外女思春台湾三级 | 欧美亚洲国产综合在线 | gayrb漫画免费入口 | 青青草原网 | 精品99一区二区三区麻豆 |