激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

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

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 成人国产精品久久 | 久久国产精品二国产精品中国洋人 | 欧美巨乳在线观看 | 国产色爱综合网 | 3级毛片 | 欧美黄色一级生活片 | 一级黄色免费电影 | 日韩在线观看高清 | 欧美黑人xx | wwwxxx国产| 一级黄色av电影 | 国产精选在线 | 国产精品久久99精品毛片三a | 激情久久一区二区 | 欧美日韩免费一区二区三区 | 久久成人综合网 | 99riav国产在线观看 | 久久不射电影 | 国产免费福利视频 | 亚洲视频综合网 | 国产成人高清在线 | 久久91精品久久久久清纯 | 中文字幕天堂在线 | 福利一区二区三区视频在线观看 | 国产小视频一区 | 日本羞羞影院 | 欧美成人午夜精品久久久 | 天天舔夜夜操 | 渔夫荒淫艳史 | 伊人成人免费视频 | 美女喷水网站 | 国产欧美日韩在线不卡第一页 | 亚洲精品7777xxxx青睐 | 一级看片免费视频 | 亚洲欧美aⅴ| 黄色片网页 | 日本aaaa片毛片免费观蜜桃 | 91成人在线免费视频 | 免费黄色在线电影 | 欧美一级α| 国产成人强伦免费视频网站 |