python基礎 函數 (四)

一? 函數基本

def func1():print("hello world")return 1, "hello", ("wo", "ai"), ["ni", "da"], {"you": "xi"}   # return 可以返回任意# 結果: (1, 'hello', ('wo', 'ai'), ['ni', 'da'], {'you': 'xi'})
#    return func1  # 返回函數的內存地址# 結果: <function func1 at 0x7f32184adf28>print(func1())

?

# 總結:
#? 返回值數:=0,返回None
#? 返回值數:=1,返回對象object
#? 返回值數:>1,返回元組

?

二? 函數形參和實參

def test1(x, y): #  x, y  叫做 形參print(x)print(y)test1(1, 2)   # 1,2  叫做  實參     與形參位置一一對應
test1(x=1, y=2)   # 打印結果一樣
test1(y=2, x=1)   # 打印結果一樣    與形參順序無關
# test1(x=1, 2)  # 報錯   關鍵參數是不能寫在位置參數前面的
test1(1, y=2)    # 不報錯
# test1(1, x=1)    # 報錯def test2(x, y, z):print(x, y, z)test2(1, y=2, z=3)
test2(1, z=3, y=2)  # 結果與上面一樣
#test2(1, x=1, z=2)   # 報錯,x位置賦予了兩個值def test3(x, y=2):   #  y 是默認參數print(x, y)test3(1)  # 打印  1,2
test1(1,3)  #打印 1,3
test3(1, y=3)  #打印 1,3# 注:默認參數的特點,在調用的時候,可有可無
# 用途:默認安裝軟件

?

?

三? 數組參數

def test4(*args):  #*args ===   args = tuple([])   # 接受位置參數print(args)   # 返回元組
    
test4(1,2,3,4)  # 打印: (1,2,3,4)
test4(*[1,2,3,4])  # 打印: (1,2,3,4)def test5(x, *args):   # 混合參數print(x)print(args)test5(1,2,3,4,5,6)
# 打印結果:
# 1
# (2,3,4,5,6))

?

?

四? 字典參數

def test6(**kwargs):   # 接受字典的形式,  把關鍵字參數,轉化為字典print(kwargs)   #   返回字典

test6(name="sam", age=28)    # 結果:{'name': 'sam', 'age': 28}
test6(**{'name': 'sam', 'age': 28})  # 結果一樣def test7(name, **kwargs):print(name)print(kwargs)test7('sam')
# 結果
# sam
# {}# test7('sam', 'yong') # 報錯,因為只能接受一個位置參數, 而kwargs只接受關鍵字參數
test7('sam', name="sam", age=28)
# 結果
# sam
# {'name': 'sam', 'age': 28}def test7(name, age=12, **kwargs):
#def test7(name, **kwargs, age=12):  # 報錯print(name)print(age)print(kwargs)test7('sam', addr='beijing', phone=123456)  # 
# 結果
# sam
# 12
# {'addr': 'beijing', 'phone': 123456}

test7('sam', age=3, addr='beijing', phone=123456) 
test7('sam', 3,  addr='beijing', phone=123456) 
test7('sam', addr='beijing', phone=123456, age=3) 
# test7('sam',23, addr='beijing', phone=123456, age=3)  # 報錯,age 多值錯誤
# 以上結果都一樣
# sam
# 3
# {'addr': 'beijing', 'phone': 123456}def test8(name, age=12, *args, **kwargs):print(name)print(age)print(args)print(kwargs)test8('sam', age=3, addr='beijing', phone=123456) # 位置參數一定要寫在關鍵字參數的前面
# 結果
# sam
# 12
# ()
# {'addr': 'beijing', 'phone': 123456}

?

?

五? 局部變量 和 全局變量

?

name = "sam"
def func1():print(name)
#   name = "jey"  # 程序會報錯  UnboundLocalError: local variable 'name' referenced before assignment
func1()
# 結果
# sam

?

name = 'sam'
def chname(name):print("before change name:", name)name = 'jey'   # 這個變量的作用域只在這個函數中print("after change name:", name)chname(name)
print(name)  # sam   沒有變
# 結果
# before change name:sam
# after change name:jey
# sam

?

如果要在函數中修改全局變量,使用global 申明變量

name = 'gao'
def testname():global name   # 引用全局變量   最佳實踐  global 不要用print(name)   # gaoname = 'shao'print(name)   # shao

testname()    
print(name)  # shao 改變了

?

# 注:只有數字,字符串 不能再函數中改,但是,列表,字典,集合能改

names = ['sam', 'jey', 'snow']def test9():print(names)name[0] = 'sammy'print(names)test9()
print(names)
# 結果
# ['sam', 'jey', 'snow']
# ['sammy', 'jey', 'snow']
# ['sammy', 'jey', 'snow']

?

轉載于:https://www.cnblogs.com/gaosy-math/p/7401631.html

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

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

相關文章

c#注釋

c#的注釋分為&#xff1a;這里不能不說一下什么是注釋。 注釋本身不會執行&#xff0c;只是說明性文字&#xff0c;只供程序員閱讀。 注釋又分為&#xff1a;單行注釋&#xff0c;多行注釋&#xff0c;文檔注釋。 單行注釋&#xff1a;//開始 多行注釋&#xff1a;/*開始&#…

嵌入式linux字符設備驅動

1. 我們需要先調用register_chrdev_region()或 alloc_chrdev_region()來向系統申請設備號int register_chrdev_region( dev_t first, unsigned int count, char *name ); //函數通過已知的設備號first來注冊字符設備區域。 int alloc_chrdev_region( dev_t *dev, unsigned int…

數字后端——時鐘樹綜合

在數字集成電路設計中&#xff0c;時鐘信號是數據傳輸的基準&#xff0c;它對于同步數字系統的功能、性能和穩定性起決定性作用&#xff0c;所以時鐘信號的特性及其分配網絡尤被人們關注。時鐘信號通常是整個芯片中有最大扇出、通過最長距離、以最高速度運行的信號。時鐘信號必…

52次課(mysql用戶管理、常用sql語句、 mysql數據庫備份恢復)

MySQL創建用戶以及授權 默認用戶是root用戶&#xff0c;不可能所有人員都用root用戶&#xff0c;創建用戶防止誤刪除&#xff0c;因為mysql里邊有多個庫每個庫里有很多表&#xff0c;所以需要給單獨的用戶做一些授權我只需要它對某一個數據庫有權限&#xff0c;或者說對某個數據…

線程池的種類,區別和使用場景

newCachedThreadPool&#xff1a; 底層&#xff1a;返回ThreadPoolExecutor實例&#xff0c;corePoolSize為0&#xff1b;maximumPoolSize為Integer.MAX_VALUE&#xff1b;keepAliveTime為60L&#xff1b;unit為TimeUnit.SECONDS&#xff1b;workQueue為SynchronousQueue(同步隊…

20145225 《信息安全系統設計基礎》第14周學習總結

第九章 虛擬存儲器 虛擬存儲器是計算機系統最重要的概念之一&#xff0c;它是對主存的一個抽象 三個重要能力&#xff1a; 它將主存看成是一個存儲在磁盤上的地址空間的高速緩存&#xff0c;在主存中只保存活動區域&#xff0c;并根據需要在磁盤和主存之間來回傳送數據&#xf…

數字后端——布線

布線是繼布局和時鐘樹綜合之后的重要物理實施任務&#xff0c;其內容是將分布在芯片核內的模塊、標準單元和輸入輸出接口單元( I /O pad&#xff09;按邏輯關系進行互連&#xff0c;其要求是百分之百地完成它們之間的所有邏輯信號的互連&#xff0c;并為滿足各種約束條件進行優…

動態加載和靜態加載及其編譯步驟

在類unix操作系統中&#xff0c;驅動加載方式一般分為&#xff1a;動態加載和靜態加載&#xff0c;下面分別對其詳細論述。 一、動態加載 動態加載是將驅動模塊加載到內核中&#xff0c;而不能放入/lib/modules/下。 在2.4內核中&#xff0c;加載驅動命令為&#xff1a;ins…

streamsets 集成 minio s3測試

具體streamsets crate 集成可以參考 streamsets crate 以下文檔只關注minio 集成的配置 minio 服務 搭建 具體搭建參考&#xff1a; https://www.cnblogs.com/rongfengliang/p/9197315.html 創建bucket &#xff08;crate 集成使用&#xff09; 測試的csv 文件從https://www.s…

sqlite性能優化

1、數據庫性能上 1.1 批量事務插入&#xff0c;提升數據插入的性能 由于sqlite默認每次插入都是事務&#xff0c;需要對文件進行讀寫&#xff0c;那么減少事務次數就能簡書磁盤讀寫次數從而獲得性能提升。 1.2 單條sql優于多條sql 實測發現&#xff0c;對于幾十條sql插入當你替…

【codecombat】 試玩全攻略 第十四關 已知敵人

第十四關 已知敵人 在這一關里&#xff0c;我們的英雄獲得了一副可以看見敵人的眼鏡&#xff0c;所以他很強勢的學會了“發現敵人”的技能。 hero.findNearestEnemy()命令&#xff0c;單詞多了&#xff0c;首字母都要大寫了&#xff0c;不然分不出來。玩過wow的小伙伴用過 宏命…

數字后端——信號完整性分析

隨著光刻和集成電路制造工藝的不斷進步&#xff0c;以及芯片的特征尺寸從深亞微米到納米的迅速采用&#xff0c;人們一方面因為芯片的功能極大提高而受益&#xff0c;另一方面&#xff0c;當邏輯門的溝道長度減小時&#xff0c;門的開關時間會減小&#xff0c;這意味著輸出驅動…

新浪前端面試

1、什么是Html語義化&#xff1f; 語義化 div > section&#xff0c;div > nav(語言自己能解釋)&#xff0c; input/(關閉符號) br/相對于樣式標記&#xff0c;如 i&#xff08;樣式&#xff09;/ em&#xff08;語義&#xff09;&#xff1b;b&#xff08;樣式&#xff…

poj3278 【BFS】

Catch That CowTime Limit: 2000MS Memory Limit: 65536KTotal Submissions: 97240 Accepted: 30519Description Farmer John has been informed of the location of a fugitive cow and wants to catch her immediately. He starts at a point N (0 ≤ N ≤ 100,000) on a num…

表單高級

● 表單高級 ○ 表單字段集<fieldset></fieldset> ■ 功能&#xff1a;相當于一個方框&#xff0c;在字段集中可以包含文本和其他元素。該元素用于對表單中的元素進行分組并在文檔中區別標出文本。fieldset元素可以嵌套&#xff0c;在其內部可以在設置多個fieldset…

CMOS圖像傳感器——TDI CIS

一、面陣與線陣圖像傳感器 人們在日常生活中見到的相機大多基于普通的面陣圖像傳感器,這種相機多用來拍攝靜止的物體。即使用它們來拍攝運動的物體,也僅僅是縮短了相鄰兩次拍攝的時間間隔,無需對所拍攝圖像進行額外操作,對物體的運動方向和速度也沒有限定條件。 除此之外,…

gpio_request 原形代碼

其原型為 int gpio_request(unsigned gpio, const char *label) 先說說其參數&#xff0c;gpio則為你要申請的哪一個管腳&#xff0c;label則是為其取一個名字。其具體實現如下&#xff1a; [cpp] view plaincopyprint?int gpio_request(unsigned gpio, const char *label) …

【noip模擬】德充符

時間限制&#xff1a;2s 內存限制&#xff1a;512MB 【題目描述】 申徒嘉和鄭子產都是伯昏無人的學生&#xff0c;子產因為申徒嘉是殘疾人&#xff0c;非常看不起他&#xff0c;于是想要刁難他。 子產給了申徒嘉 n個數 a1,a2...an。 現在他要求申徒嘉重新排列這些數&#xff0c…

做好數據挖掘模型的9條經驗總結

愛數據學習社 welcome數據挖掘是利用業務知識從數據中發現和解釋知識(或稱為模式)的過程&#xff0c;這種知識是以自然或者人工形式創造的新知識。當前的數據挖掘形式&#xff0c;是在20世紀90年代實踐領域誕生的&#xff0c;是在集成數據挖掘算法平臺發展的支撐下適合商業分析…

json及JavaBean轉json

先來看看JSON&#xff1a; 什么是JSON&#xff1a; JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。 JSON是用字符串來表示Javascript對象&#xff0c;例如可以在Servlet中發送一個JSON格式的字符串給客戶端Javascript&#xff0c;Javascript可以執行這個字符串…