python函數學習1

函數1

1)定義:

def 函數名(參數列表)函數體

(2)參數傳遞:

  在python中,一切都是對象,類型也屬于對象,變量是沒有類型的。

  a = [1,2,3]

  a = "helloworld"

以上代碼中,[1,2,3]是list類型,"helloworld"是string類型,而變量a是沒有類型的,它僅僅是一個對象的引用(一個指針),可以是指向list類型對象,也可以指向string類型對象。 

  可更改(mutable)和不可更改(immutable)對象:

?

在python中,string,tuples,numbers是不可更改對象,而list,dictionary等是可修改對象。

①不可變類型:變量賦值a = 5后再賦值a = 10,這里實際是新生成一個int值對象10,再讓a指向它,而5被丟棄,不是改變了a的值,相當于新生成了a.

②可變類型:變量賦值list= [1,2,3,4]后再賦值list[2] = 5,則是將列表list的第三個元素值更改,本身沒有動,只是內部的一部分值被修改了。 

  python函數的參數傳遞:

①不可變類型:類似于(值傳遞),如 整數(number)、字符串(string)、元組(tuple)。如fun(a),傳遞的只是a的值,沒有影響a對象本身。

        比如在 fun(a)內部修改 a 的值,只是修改另一個復制的對象,不會影響 a 本身。

 1 def change(a, b):
 2  """傳遞不可變對象,交換兩個數的值"""
 3      c = a
 4      a = b
 5      b = c
 6 
 7 x = 2
 8 y = 3
 9 
10 change(x, y)
11 
12 print(x, y)

輸出結果:

2 3

可以發現,將x,y的值傳入change函數,進行交換后,輸出x,y的值還是原來的值,這就是不可變類型傳遞。

?

②可變類型:?類似于(引用傳遞),如 列表(list),字典(dict)。如 fun(list),則是將 list 真正的傳過去,修改后fun外部的list也會受影響。

1 def alter_list(list):
2     """傳遞可變對象,修改列表的值"""
3     list[0] = 3
4 
5 list1 = [1, 2, 3, 4, 5]
6     alter_list(list1)
7     print(list1)

輸出結果:

[3, 2, 3, 4, 5]

可以發現,list1中的值發生了改變,同樣的寫法,上面的例子中的值沒有改變,而下面的值卻改變,這就是因為不可變類型和可變類型的參數傳遞。

注意:python 中一切都是對象,嚴格意義我們不能說值傳遞還是引用傳遞,我們應該說傳不可變對象和傳可變對象。

(3)參數:

  必須參數,位置參數,關鍵字參數,默認參數,不定長參數。

①必須參數: 調用函數時必須傳入一個參數。

1     def func(a):
2         print(a)
3         
4     func()      # 沒有參數會報錯

?

②位置參數:在傳遞參數時必須與形參的順序對應。

1     def func(a, b):
2         print('a=%s'%a)
3         print('b=%s'%b)
4 
5     func(2, 3)
6     func(3, 2)

?

③關鍵字參數:使用關鍵字參數允許函數調用時參數的順序與聲明時不一致,因為 Python 解釋器能夠用參數名匹配參數值。

1 def func(a, b):
2   print('a=%s'%a)
3   print('b=%s'%b)
4 
5 func(a=2, b=3)
6 func(b=3, a=2)

?

④默認參數:調用函數時,如果沒有傳遞參數,則會使用默認參數。

1     def func(a, b=3):
2         print('a=%s'%a)
3         print('b=%s'%b)
4 
5     func(2)

?

⑤不定長參數: def 函數名(形參1,*形參2) ??????加了星號*的參數會以元組(tuple)的形式導入,存放所有未命名的變量參數。

       def 函數名(形參1,**形參2) 加了兩個星號**的參數會以字典的形式導入。

 1 def func1(a, *b):
 2   print(a)
 3   print(b)
 4 
 5 func1(3, 4, 5, 'a', [1, 2, 3])
 6 
 7 def func2(a, **b):
 8   print(a)
 9   print(b)
10 
11 func2(3, c=4, d=5)  # 因為**要以字典的形式存儲,而字典需要key值和value值,所以傳參的時候要用這種方式

輸出結果:

3
(4, 5, 'a', [1, 2, 3])
3
{'c': 4, 'd': 5}

?

  

?

轉載于:https://www.cnblogs.com/zuoxide/p/10534307.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/394793.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/394793.shtml
英文地址,請注明出處:http://en.pswp.cn/news/394793.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

kafka應用于區塊鏈_Apache Kafka的區塊鏈實驗

kafka應用于區塊鏈by Luc Russell盧克羅素(Luc Russell) Apache Kafka的區塊鏈實驗 (A blockchain experiment with Apache Kafka) Blockchain technology and Apache Kafka share characteristics which suggest a natural affinity. For instance, both share the concept o…

pythonfor循環100次_以寫代學: python for循環 range函數 xrange函數

腳本一: #!/usr/bin/env python # coding: utf8 sum100 0 for i in range(101): sum100 i #(1)range是一個可以取值的函數,上邊這個取的是0-100,并不包含101 #(2)也可以指定,比如r…

iis下php 500錯誤

很不想用iis,然而客戶不想增加機器,只好按客戶的意思了。可是沒想到發送短信以在本地 機器上是好的,在iis下直接500。 ??一開始以為是防火墻問題,后來檢查了一下沒有,再后來換了一個短信接口,就莫名其妙好…

linux mv 遞歸拷貝,奇技淫巧 - 給Linux中的cp和mv命令中添加進度條的高級拷貝

GNU cp和GNU mv命令用于在GNU/Linux操作系統中復制和移動文件和目錄。這兩個命令缺少的一個特性是它們不顯示任何進度條。如果復制一個大文件或目錄,您就不知道完成復制過程需要多長時間,也不知道復制的數據所占的百分比。還有您將看不到當前正在復制哪個…

webgl 著色器_如何在WebAssembly中使用WebGL著色器

webgl 著色器by Dan Ruta通過Dan Ruta 在WebAssembly中使用WebGL著色器 (Using WebGL shaders in WebAssembly) WebAssembly is blazing fast for number crunching, game engines, and many other things, but nothing can quite compare to the extreme parallelization of …

【洛谷P1966】火柴排隊

兩列排序后將編號一一對應 歸并排序求逆序對 &#xff08;每一次交換就去掉一個逆序對&#xff09; 1 #include<cstdio>2 #include<cstring>3 #include<algorithm>4 #define ll long long5 using namespace std;6 const int N100100;7 const ll P99999997;8 …

python字符串補空格輸出_Python去除空格,Python中常見字符串去除空格的方法總結...

今天小編就為大家分享一篇關于Python去除字符串前后空格的幾種方法&#xff0c;小編覺得內容挺不錯的&#xff0c;現在分享給大家&#xff0c;具有很好的參考價值&#xff0c;需要的朋友一起跟隨小編來看看吧&#xff1a; Python去除空格方法一&#xff1a; strip()方法&#x…

Alan Walker MV 合輯01 by defender

Alan Walker MV合輯 出來啦&#xff01; 百度網盤下載地址&#xff1a; 鏈接&#xff1a;https://pan.baidu.com/s/10WSool70XBe_8tJOae8V-w 提取碼&#xff1a;uckq 地址查看Microsoft Onedrive Download Address:  BE DELETED Google Drive Download Address&#xff1a; …

scanf函數具體解釋與緩沖區

1.基本信息 函數原型&#xff1a; int scanf( char *format, args, ...); 函數返回值&#xff1a; 讀入并賦給args的數據個數。遇到文件結束返回EOF&#xff0c;出錯返回0。 函數功能&#xff1a; scanf函數是格式化輸入函數&#xff0c;它從標準輸入設備(鍵盤)讀取輸入的信息。…

linux中win文件轉為unix,如何將文本文件從Windows轉換為Unix

從Unix轉換到Windows時&#xff0c;我得到正確的輸出;但是&#xff0c;從Windows到Unix時&#xff0c;我得到了一些奇怪的輸出。我認為我必須允許的是刪除回車\ r。雖然這不起作用。當我運行代碼后打開文本文件時&#xff0c;我得到了一些奇怪的結果&#xff0c;第一行是正確的…

程序員偽造一年工作經驗_試火—如何偽造程序員

程序員偽造一年工作經驗2017年9月6日 (6 September 2017) Sweat is running down my face. I’m staring down a blank sublime text document. What on earth am I doing? My hands are resting above the keyboard of my MacBook pro.汗水順著我的臉。 我盯著一個空白的崇高…

在unity中設置多種怪物數據_Unity可編程渲染管線(SRP)系列(三)——光照(單通道 正向渲染)...

本文重點:1、漫反射著色2、支持方向光、點光源和聚光燈3、每幀允許16個可見光源4、每個對象最多計算四個像素光和四個頂點光這是涵蓋Unity可編寫腳本的渲染管線的教程系列的第三部分。這次&#xff0c;我們將通過一個Drawcall為每個對象最多著色8個燈光來增加對漫反射光照的支持…

Java內部類的定義和使用

為什么要用到內部類&#xff1a; 在java開發學習中我們經常會碰到內部類。內部類又有很多的優勢&#xff1a;首先舉一個簡單的例子&#xff0c;如果你想實現一個接口&#xff0c;但是這個接口中的一個方法和你構想的這個類中的一個方法名稱參數相同&#xff0c;你應該怎么辦&am…

蛋清打發奶油狀

在做蛋糕、冰淇凌、面包之類的時候往往都需要奶油狀蛋清&#xff0c;讓蛋糕、面包更蓬松&#xff0c;冰激凌也可以使用其當做奶油來用。用料 雞蛋4個 根據用量選擇鹽(只做冰激凌用奶油放)5g(根據蛋量)白醋(可以不放&#xff0c;根據喜好)5g(根據蛋量)白砂糖40g(分三次放)根據…

react構建_您應該了解的有關React的一切:開始構建所需的基礎知識

react構建by Scott Domes由斯科特多姆斯(Scott Domes) 您應該了解的有關React的一切&#xff1a;開始構建所需的基礎知識 (Everything You Should Know About React: The Basics You Need to Start Building) Are you curious about React and haven’t had the chance to lea…

榮新linux培訓,51CTO博客-專業IT技術博客創作平臺-技術成就夢想

切換用戶 su - root文件夾管理 mkdir(新建文件夾) rmdir(刪除空目錄)文件管理 touch(新建文件) rm(刪除文件)rm -rf(刪除文件夾) cat(查詢文件)文件文件夾 mv(剪切文件) cp(復制文件)默認拷貝文件&#xff0c;cp -r 就可以拷貝文件夾啦批量建文件 touch /root/tes…

Educational Codeforces Round 33 (Rated for Div. 2) E. Counting Arrays

題目鏈接 題意&#xff1a;給你兩個數x,yx,yx,y,讓你構造一些長為yyy的數列&#xff0c;讓這個數列的累乘為xxx&#xff0c;輸出方案數。 思路:考慮對xxx進行質因數分解&#xff0c;設某個質因子PiP_iPi?的的冪為kkk,則這個質因子的貢獻就相當于把kkk個PiP_iPi?放到yyy個盒子…

《面向對象分析與設計》一第2章 什么是面向對象分析

第2章 什么是面向對象分析 面向對象分析&#xff08;ObjectOriented Analysis&#xff0c;OOA&#xff09;&#xff0c;就是運用面向對象方法進行系統分析。它是軟件生命周期的一個階段&#xff0c;具有一般分析方法所共同具有的內容、目標及策略。但是OOA強調運用面向對象方…

hql可以使用distinct嗎_輸送食品可以使用白色PVC輸送帶嗎?

食品&#xff0c;是給人們吃到肚子里的&#xff0c;因此不管在加工環節、制造環節還是其他環節&#xff0c;都需要做好食品的安全問題。根據不同的食品&#xff0c;其制造的環境也不同&#xff0c;所使用到的食品輸送帶的材質也是不一樣的&#xff0c;這些是需要根據輸送的食品…

htc one m7 linux驅動,HTC One M7官方RUU固件包(可救磚)

在網上找了找關于HTC One M7 (801e)的官方ruu固件包還不多&#xff0c;找了一些&#xff0c;不過有些不能下載&#xff0c;在這里整理了幾款可以下載的官方ruu包&#xff0c;這些包都是官方原版的&#xff0c;都是支持線刷的&#xff0c;大家可以下載下來備用了&#xff0c;也可…