Python3 From Zero——{最初的意識:007~函數}

一、編寫可接受任意數量參數的函數:*、**

>>> def test(x, *args, y, **kwargs):
...  pass
... 
>>> test(1, 2, 3, 4 ,5 ,5, y=9, aa=99, bb=88,cc=900)
>>> test(1, 2, 3, 4 ,5 ,5, 9, aa=99, bb=88,cc=900)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: test() missing 1 required keyword-only argument: 'y'

#以*打頭的參數只能作為最后一個位置參數出現,以**打頭的參數只能作為最后一個參數出現;*args之后仍然可以有其它的參數出現,但只能是關鍵字參數(keyword_only)

二、編寫只接受關鍵字參數的函數

>>> def test(*, x, y):
...  pass
... 
>>> test(8, 9)
Traceback (most recent call last):File "<stdin>", line 1, in <module>
TypeError: test() takes 0 positional arguments but 2 were given
>>> test(x=9, y=8)

#星號*之后的參數都是keyword_only參數

三、函數注解

>>> def add(x:int ,y:int) ->int:
...  return x + y
... 
add.__annotations__
{'x': <class 'int'>, 'return': <class 'int'>, 'y': <class 'int'>}

#函數注解只會保存在函數的__annotations__屬性中;因為Python中沒有類型聲明,函數注解可以用于提示

四、從函數中返回多個值:各返回值之間以逗號“,”分隔,本質上是返回一個tuple,可通過tuple解包實現返回多個值的目的

>>> def myfun():
...  return 1, 2, 3
... 
>>> x, y, z = myfun()
>>> x
1
>>> y
2
>>> z
3
>>> a = myfun()
>>> a
(1, 2, 3)

五、定義帶有默認參數的函數

  默認參數只會在函數定義時被綁定一次

>>> x = 44
>>> def sample(a=x):
...  print(a)
... 
>>> sample()
44
>>> x = 88
>>> sample()
44

  默認參數的默認值通常應該是不可變對象;若設置可變對象,應參照如下方式:

>>> def test(a, b=None):
...  if b is None:
...   b = []
...  pass
... 

六、嵌套函數

>>> def xxx(m):
...  def yyy(n):
...   return m + n
...  return yyy
... 
>>> xxx(20)    #可對比嵌套列表的邏輯進行理解
<function xxx.<locals>.yyy at 0x7f68c3aef0d0>
>>> xxx(20)(20)   #給內嵌的函數參數賦值
40
>>> def test(m):
...  return lambda n: m + n    #實現原理上,lambda可以理解為嵌套函數
... 
>>> test(20)(20)
40

七、讓帶有N個參數的可調用對象以較少的參數形式調用

  即:給一部分參數預先斌予固定值,相當于轉化成一個帶有默認值的函數

>>> def sum(a, b, c, d):
...  return a + b + c + d
... 
>>> sum(1, 2, 3, 4)
10
>>> import functools
>>> test_0 = functools.partial(sum, b=2, c=3, d=4)
>>> test_0(1)
10
>>> test_0(100)
109

  也可使用lambda函數實現

>>> test_1 = lambda a, b=2, c=3, d=4: sum(a, b, c, d)
>>> test_1(1)
10
>>> test_1(100)
109

轉載于:https://www.cnblogs.com/hadex/p/5767176.html

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

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

相關文章

mysql 數據庫名稱限制_mysql 數據庫名稱限制

mysql 數據庫名稱限制云服務器(Elastic Compute Service&#xff0c;簡稱ECS)是阿里云提供的性能卓越、穩定可靠、彈性擴展的IaaS(Infrastructure as a Service)級別云計算服務。云服務器ECS免去了您采購IT硬件的前期準備&#xff0c;讓您像使用水、電、天然氣等公共資源一樣便…

視頻圖像不正常的幾個表現及解決方法

1、 圖像發白的原因? 1、檢查是否鏡頭圈調行過大而導致圖像發白; 2、在檢查攝像機后有一自動光圈亮度輔助調整電位器&#xff0c;是否因電位器調得過大; 3、檢查監視器亮度&#xff0c;對比度是否調得過大或故障. 2、 圖像質量不好的原因? 檢查鏡頭是否有指紋或太臟。檢查光圈…

redis watch multi exec 關系

EXEC 執行所有事務塊內的命令。 假如某個(或某些) key 正處于 WATCH 命令的監視之下&#xff0c;且事務塊中有和這個(或這些) key 相關的命令&#xff0c;那么EXEC 命令只在這個(或這些) key 沒有被其他命令所改動的情況下執行并生效&#xff0c;否則該事務被打斷(abort)。 返回…

Chrome 控制臺指南

轉自&#xff1a;http://blog.jobbole.com/76985/ Chrome的開發者工具已經強大到沒朋友的地步了&#xff0c;特別是其功能豐富界面友好的console&#xff0c;使用得當可以有如下功效&#xff1a; 更高「逼格」更快「開發調試」更強「進階級的Frontender」Bug無處遁形「Console大…

專家:大數據等新技術助力信息融合

ACCA中國區政策主管錢毓益本周末在出席由上海國家會計學院主辦的“管理會計&#xff1a;融合與創新”論壇時表示&#xff1a;新一輪以移動互聯網、物聯網和云計算及大數據為代表的信息技術&#xff0c;將融合與創新發展表現得淋漓盡致。 錢毓益指出&#xff0c;通過數字化轉型與…

python數據類型匯總_python基礎數據類型匯總

#!/usr/bin/env python# -*- encoding:utf-8 -*-# author:Administrator# make_time:2018/6/9‘‘‘數據類型&#xff1a;不可變數據類型&#xff1a;int、str、bool、tuple、frozenset可變數據類型&#xff1a;list、dict、set公共方法&#xff1a;count()、len()、del、copy(…

開發實戰細節之——關于整型轉換為字符串類型的性能與實現分析

細節決定成敗&#xff0c;開發中往往從一些細節就可以看出一個程序員的開發水準&#xff0c;下面我就給大家分享一下開發中最最常見的int轉換為String類型的方法及其性能解析。 一般大家最常用的方法有 方法一&#xff1a;String s1 String.valueOf(i); 方法二&#xff1a;St…

華為服務器故障燈不開機_華為服務器日常維護及故障處理介紹V.ppt

通電策略 power on上電自動開機。 power off上電不自動開機&#xff0c;需按前面板電源按鈕才能開機。 Last State上電開機與否取決于上次斷電之前的狀態&#xff0c;如果是關機狀態則通電后不能自動開機&#xff0c;如果是開機狀態則通電后可以自動開機。 硬件狗 BMC WDT Acti…

《黑客大曝光:移動應用安全揭秘及防護措施》一2.2 攻擊與對策

本節書摘來自華章出版社《黑客大曝光&#xff1a;移動應用安全揭秘及防護措施》一書中的第2章&#xff0c;第2.2節&#xff0c;作者 &#xff08;美&#xff09;Neil Bergman &#xff0c;更多章節內容可以訪問云棲社區“華章計算機”公眾號查看 2.2 攻擊與對策 好&#xff0c…

Android 4.2 通知通過PendingIntent啟動Activity失敗的問題

今天突然發現在Android 4.2手機上點擊通知消息無法打開Activity的問題&#xff0c;具體Logcat信息如下&#xff1a; 01-09 11:37:43.733: WARN/ActivityManager(92): Unable to send startActivity intent java.lang.SecurityException: Permission Denial: starting Intent { …

ubuntu安裝sublime

添加sublime text 3的倉庫&#xff1a; sudo add-apt-repository ppa:webupd8team/sublime-text-3 更新軟件庫 sudo apt-get update 安裝Sublime Text 3: sudo apt-get install sublime-text-installer 安裝sublime2: sudo add-apt-repository ppa:webupd8team/sublime-text-2 …

jdbctemplate mysql 配置_Spring JDBCTemplate配置使用

一、開發環境Windows 10IntelliJ IDEA 2016.1 旗艦版JDK1.8二、項目和數據庫結構項目結構&#xff1a;數據庫(MySQL 5.5.39)&#xff1a;/*Navicat MySQL Data TransferSource Server : localhostSource Server Version : 50539Source Host : localhost:3306Source Database : …

細數家庭安防五大亂象 何時能步入正軌

雖然智能家居行業在我國的成長已逾十個年頭了&#xff0c;但是目前市場離成型仍然有一段距離。市場上可謂“亂象”叢生&#xff0c;這些絆腳石嚴重阻礙了行業的良性發展。市場亂象繁生&#xff0c;智能家居從概念炒作到價格高抬&#xff0c;相關預測顯示&#xff0c;若真如電商…

HDU 1181 變形課

Problem Description呃......變形課上Harry碰到了一點小麻煩,由于他并不像Hermione那樣可以記住全部的咒語而任意的將一個棒球變成刺猬什么的,可是他發現了變形咒語的一個統一規律:假設咒語是以a開頭b結尾的一個單詞,那么它的作用就恰好是使A物體變成B物體. Harry已經將他所會的…

多線程(同步代碼塊和同步函數)

線程安全問題 當多條語句在操作同一個線程共享數據時&#xff0c;一個線程對多條語句只執行了一部分&#xff0c;還沒有執行完&#xff0c; 另一個線程參與進來執行。導致共享數據的錯誤。解決辦法&#xff1a; 對多條操作共享數據的語句&#xff0c;只能讓一個線程都執行…

沒有基礎學python_python沒有基礎好學嗎

什么是Python&#xff1f;Python是一種計算機程序設計語言。你可能已經聽說過很多種流行的編程語言&#xff0c;比如非常難學的C語言&#xff0c;非常流行的Java語言&#xff0c;適合初學者的Basic語言&#xff0c;適合網頁編程的JavaScript語言等&#xff0c;Python是他們其中…

C++中的頭文件和源文件

一、C編譯模式 通常&#xff0c;在一個C程序中&#xff0c;只包含兩類文件——cpp文件和h文件。cpp文件被稱作C源文件&#xff0c;里面放的都是C的源代碼&#xff1b;h文件則被稱作C頭文件&#xff0c;里面放的也是C的源代碼。 C 語言支持“分別編譯”&#xff08;separ…

Hibernate 事物隔離級別 深入探究

目錄 一、數據庫事務的定義 二、數據庫事務并發可能帶來的問題 三、數據庫事務隔離級別 四、使用Hibernate設置數據庫隔離級別 五、使用悲觀鎖解決事務并發問題 六、使用樂觀鎖解決事務并發問題 Hibernate事務與并發問題處理&#xff08;樂觀鎖與悲觀鎖&#xff09; 一、數據庫…

Linked List Cycle II - LeetCode

Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Note: Do not modify the linked list. Follow up:Can you solve it without using extra space? 思路&#xff1a;維護兩個指針slow和fast。先判斷是否存在環。 在判斷是否…

mysql 無論輸入什么都是現實 not found_NotAPanda

前言面試競爭力越來越大&#xff0c;是時候擼一波Vue和React源碼啦&#xff1b;本文從20個層面來對比Vue和React的源碼區別&#xff1b;如果需要了解API的區別&#xff0c;請戳&#xff1a;Vue 開發必須知道的 36 個技巧React 開發必須知道的 34 個技巧文章源碼&#xff1a;請戳…