Python3函數和代碼復用

函數的定義

def 函數名([參數列表]):'''注釋'''函數體

注意事項

  • 函數形參不需要聲明類型,可以使用return語句在結束函數執行的同時返回任意類型的值,函數返回值類型與return語句返回表達式i的類型一致

  • 即使該函數不需要接受任何參數,也必須保留一堆空的圓括號

  • 函數體相對于def關鍵字必須保持一定的空格縮進

  • 無論return語句出現在函數的什么位置,一旦得到執行將直接結束函數的執行

  • 如果函數沒有return語句、有return語句但是沒有執行到、執行了不返回任何值的return語句,解釋器都會認為該函數以return None結束,即返回空值

  • 調用函數時向其傳遞實參,將實參的引用傳遞給形參,但是在將要修改形參的時候將會復制一份形參,而不會改變實參。但是如果實參是可變序列,則對形參對應序列的修改將會修改實參的序列
    在這里插入圖片描述

  • 實參和形參的順序必須嚴格一致,而且實參和形參的數量必須相同

  • 按照形參名輸入實參,此時參數之間的順序可以任意調整
    在這里插入圖片描述

  • 默認值參數右邊都不能再出現沒有默認值的普通位置參數

  • 調用函數時是否為默認參數傳遞實參是可選的,即是否傳入參數都可以

  • 可以使用函數名.__defaults__隨時查看函數所有默認值參數的當前值

  • 多次調用函數并且不為默認值參數傳遞值時,默認值參數只在定義時進行一次解釋和初始化,對于列表、字典這樣可變類型的默認值參數,這一點可能會導致很嚴重的邏輯錯誤。
    在這里插入圖片描述

  • 可變長參數:星號加上參數可以用來接受多個實參并將其放入一個元組中
    在這里插入圖片描述

  • 可變長多參數:兩個星號加參數可以用來接受多個關鍵參數并將其返給字典中
    在這里插入圖片描述

  • 位于*parameter或單獨一個*之后的所有參數都只能以關鍵詞參數的形式進行傳值,不接受其他任何形式的傳值。

  • 傳遞參數時的序列解包:在實參序列前加一個星號將其捷豹,然后傳遞給多個單變量形參
    在這里插入圖片描述

  • 如果函數實參是字典,可以在前面加上兩個星號進行解包,等價于關鍵實參
    在這里插入圖片描述

  • 我們可以標注函數參數和返回值類型,可是這個標注如果我們自己不寫斷言的話沒什么用
    在這里插入圖片描述

  • 局部變量和全局變量:可以在函數體中直接使用全局變量,前提是不進行更改,一旦進行更改將會創建局部變量
    在這里插入圖片描述

  • 如果要在函數體中使用全局變量需要在函數體中進行聲明

全局變量:global

在這里插入圖片描述

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

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

相關文章

一文說盡C++賦值運算符重載函數(operator=)

http://www.cnblogs.com/zpcdbky/p/5027481.html在前面:關于C的賦值運算符重載函數(operator),網絡以及各種教材上都有很多介紹,但可惜的是,內容大多雷同且不全面。面對這一局面,在下在整合各種資源及融入個人理解的基…

Python a和a[:]的區別

簡單來講a[:]是深復制,a是淺復制,相當于賦值a的話是賦值了指針,賦值a[:]相當于復制了a對應的那段空間 例如: a [1,1,1,1,1,1]for x in a:if x1:a.remove(x)print(a)運行結果: remove操作是移除序列中第一個x元素。…

約瑟夫環(c語言程序完整版)

https://blog.csdn.net/m_hahahaha1994/article/details/51742453約瑟夫環(約瑟夫問題)是一個數學的應用問題:已知n個人(以編號1,2,3…n分別表示)圍坐在一張圓桌周圍。從編號為k的人開始報數&am…

Linux系統【二】exec族函數及應用

文件描述符 文件描述符表是一個指針數組,文件描述符是一個整數。 文件描述符表對應的指針是一個結構體,名字為file_struct,里面保存的是已經打開文件的信息 需要注意的是父子進程之間讀時共享,寫時復制的原則是針對物理地址而言…

白話C++系列(27) -- RTTI:運行時類型識別

http://www.cnblogs.com/kkdd-2013/p/5601783.htmlRTTI—運行時類型識別 RTTI:Run-Time Type Identification。 那么RTTI如何來體現呢?這就要涉及到typeid和dynamic_cast這兩個知識點了。為了更好的去理解,那么我們就通過一個例子來說明。這個…

使用頭文件的原因和規范

原因 通過頭文件來調用庫功能。在很多場合,源代碼不便(或不準)向用戶公布,只 要向用戶提供頭文件和二進制的庫即可。用戶只需要按照頭文件中的接口聲明來調用庫 功能,而不必關心接口怎么實現的。編譯器會從庫中提取相應…

轉圈踢人問題

https://www.cnblogs.com/lanxuezaipiao/p/3339603.html 有N個人圍一圈依次報數,數到3的倍數的人出列,問當只剩一個人時他原來的位子在哪里? 解答:經典的轉圈踢人問題,好吧專業一點,約瑟夫環問題&#xff0…

Linux系統【三】回收子進程

孤兒進程 父進程先于子進程結束,則子進程成為孤兒進程,子進程的父進程成為init進程,則稱init進程領養孤兒進程。現在好像是用戶進程中的system進程。 僵尸進程 進程終止,父進程不進行回收,自己成殘留資源(PCB)存放在…

string類的基本實現

https://blog.csdn.net/qq_29503203/article/details/52265829在面試中面試官常常會讓你寫出string類的基本操作,比如:構造函數,析構函數,拷貝構造等等.下面是除此之外的一些操作,希望可以幫助你更好的理解string以便以…

Python3常用數據結構

Python3中有三種組合數據類型,分別為: 序列類型:字符串(str)、元組(tuple)、列表(list)集合類型:集合(set)映射類型:字典…

Linux C++ 回射服務器

http://blog.csdn.net/qq_25425023/article/details/53914820回射服務器就是服務端將客戶端的數據發送回去。我實現的回射服務器返回增加了時間。服務端代碼&#xff0c;可以很容易看懂&#xff1a;[cpp] view plaincopy#include <sys/socket.h> #include <stdio.h&g…

TCP第四次揮手為什么要等待2MSL

當客戶端進入TIME-WAIT狀態的時候(也就是第四次揮手的時候)&#xff0c;必須經過時間計數器設置的時間2MSL(最長報文段壽命)后&#xff0c;才能進入關閉狀態&#xff0c;這時為什么呢&#xff1f;&#xff1f;&#xff1f; 這最主要是因為兩個理由&#xff1a; 1、為了保證客戶…

計算機網絡【一】概述+OSI參考模型

網絡概述 局域網:覆蓋范圍小(100m以內)&#xff0c;自己花錢買設備&#xff0c;帶寬固定(10M,100M,1000M)&#xff0c;自己維護&#xff08;接入層交換機直接連接電腦、匯聚層交換機直接連接接入層交換機&#xff09; 廣域網:距離遠&#xff0c;花錢買服務&#xff0c;租帶寬&…

單鏈表逆序的多種方式

https://www.cnblogs.com/eniac12/p/4860642.htmltemplate<class T> void List<T>::Inverse() {if(first NULL) return;LinkNode<T> *p, *prev, *latter; p first->link;   // 當前結點prev NULL;   // 前一結點l…

Linux系統【四】進程間通信-管道

進程間通信&#xff08;IPC Interprocess Communication&#xff09; 進程和進程之間的通信只能通過內核&#xff0c;在內核中提供一塊緩沖區進行通信。內核提供的這種機制叫做IPC 在進程間完成數據傳輸需要借助操作系統提供的特殊方法&#xff0c;如&#xff1a;文件&#xf…

單鏈表各種操作詳解

#include "stdio.h" #include "stdlib.h"#define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0#define MAXSIZE 20 /* 存儲空間初始分配量 */typedef int Status;/* Status是函數的類型,其值是函數結果狀態代碼&#xff0c;如OK等 */ typedef int…

Linux系統【五】進程間通信-共享內存mmap

mmap函數 #include <sys/mman.h> void *mmap(void *addr, size_t length, int prot, int flags,int fd, off_t offset);參數&#xff1a; void *addr建立映射區的首地址&#xff0c;由Linux內核指定&#xff0c;所以我們直接傳遞NULL。也就是說雖然這是一個參宿但是并不…

socket編程 -- epoll模型服務端/客戶端通信的實現

https://blog.csdn.net/y396397735/article/details/50680359 本例實現如下功能&#xff1a; 支持多客戶端與一個服務端進行通信&#xff0c;客戶端給服務端發送字符串數據&#xff0c;服務端將字符串中小寫轉為大寫后發送回客戶端&#xff0c;客戶端打印輸出經轉換后的字符串。…

Python3 面向對象程序設計

類的定義 Python使用class關鍵字來定義類 class Car:def infor(self):print("This is a car") car Car() car.infor()內置方法isinstance()來測試一個對象是否為某個類的實例 self參數 類的 所有實例方法都有一個默認的self參數&#xff0c;并且必須是方法的第一…

計算機網絡【二】物理層基礎知識

計算機網絡的性能 速率&#xff1a;連接在計算機網絡上的主機在數字信道上傳送數據位數的速率&#xff0c;也成為data rate 或bit rate&#xff0c;單位是b/s,kb/s,Mb/s,Gb/s。 我們平時所講的寬帶的速度是以字為單位的&#xff0c;但是實際中應用一般顯示的是字節 &#xff0…