【Python五篇慢慢彈(3)】函式修行知python
作者:白寧超
2016年10月9日21:51:52
摘要:繼<快速上手學python>一文之後,筆者又將python官方文件認真學習下。官方給出的pythondoc入門資料包含了基本要點。本文是對文件常用核心要點進行梳理,簡單冗餘知識不再介紹,作者假使你用c/java/c#/c++任一種語言基礎。本系列文章屬於入門內容,老鳥可以略看也可以略過,新鳥可以從篇一<快速上手學python>先接觸下python怎樣安裝與執行,以及pycharm編輯器的使用和配置;篇二<資料結構看python>介紹python語言中控制語句、列表、字典、元組、迴圈等基本操作;篇三<函式修行知python>細解python語言函式的範疇與內容;篇四<模組異常談python>採用登入的案例詳解模組來龍去脈;篇五<‘類’過依然繼續前行,直至ending再出發>介紹類的基本操作,擴充套件虛擬環境、標準類庫和下個系列預告。(本文原創,轉載註明出處:
函式修行知python)
目錄:
1 函式關鍵字引數的呼叫
【小記】本文中所有程式碼經過測試均可正常執行,python有個問題就是複製後會破壞原有格式。所以讀者複製執行時報如下錯誤:SyntaxError: expected an indented block,是因為空格問題,可以預留4個空格,或者採用tab鍵空格
例項演示:
def parrot(voltage,state='a stiff',action='voom', type='Norwegian Blue'): print("-- This parrot wouldn't", action, end=' ') print("if you put", voltage, "volts through it.") print("-- Lovely plumage, the", type) print("-- It's",state,"!") parrot(1000) # 1 positional argument parrot(voltage=1000) # 1 keyword argument parrot(voltage=1000000, action='VOOOOOM') # 2 keyword arguments parrot(action='VOOOOOM', voltage=1000000) # 2 keyword arguments parrot('a million', 'bereft of life', 'jump') # 3 positional arguments parrot('a thousand', state='pushing up the daisies') # 1 positional, 1 keyword)
執行結果:
解析:
def _parrot_(voltage,state='a stiff',action='voom', type='Norwegian Blue')
函式定義:def 定義函式。如def functionname([引數])
函式引數:1、可以有形參也可以不含形參。2、形參分為必選形參(如voltage)和可選形參(如state='a stiff')且必選形參在可選形參前。
必選形參與可選引數區別:當可選引數沒有實參時,形參預設為設定值,如此例子預設a stiff;形參中必選引數和可選引數都可以設定多個,記住必選引數必須放在可選引數前。
函式體:不同於c/java/c#等使用{}包含函式體,python使用:後面根據格式塊包含函式體,每個塊前4個空格。
2、函式定義作用域例項
例項演示:
#!/usr/bin/env python # -*- coding: utf-8 -*- """ __title__ = '' __author__ = 'cuitbnc' __mtime__ = '2016/10/9' # 歡迎進入我的主頁:http://www.cnblogs.com/baiboy/. """ i = 5 def funrange(arg=i): print(arg) i = 6 funrange(i)
執行結果:
解析:
程式執行自上往下,i=5為全域性變數賦值5,然後函式體;再次i=6,說明i索引指向值6,呼叫函式時候,i傳入的值為6.
3、函式關鍵字的使用
例項演示:
#!/usr/bin/env python # -*- coding: utf-8 -*- """ __title__ = '' __author__ = 'cuitbnc' __mtime__ = '2016/10/9' # 歡迎進入我的主頁:http://www.cnblogs.com/baiboy/. """ def _QA_(blogName, *arguments, **keywords): print("-- 伏草惟存,你的部落格地址是", blogName, "?") print("-- 奧,我知道這個部落格:", blogName) for arg in arguments: print(arg) print("-" * 20+"伏草惟存寫過文章"+"-" * 20) keys = sorted(keywords.keys()) for kw in keys: print(kw, ":", keywords[kw]) _QA_("http://www.cnblogs.com/baiboy/", "你是寫過 NLP.", "你是寫過 CRF.", "你是寫過 Python.", "你是寫過 GitHub.", NLP="十分鐘快覽自然語言處理學習總結", Python="第一次python之旅:快速上手學Python", CRF="前戲:一起走進條件隨機場(一)", GitHub="GitHub使用操作指南")
執行結果:
解析:
函式QA(blogName, *arguments, **keywords)解析如下:
blogName:必選形參,前文已經介紹過。
*arguments:元組形參,原則上可以任意個,為一個元組進行傳參,如(2,3,'strubf')
**keywords:關鍵字引數,又叫字典引數,仍然可以有多個引數,如('小明':18,'小花':19,'小王':23)
4、函式可變引數的使用
例項演示:
def _concat_(*args, sep="/"): return sep.join(args) str=_concat_("earth", "mars", "venus") print(str) str1=_concat_("earth", "mars", "venus", sep=".") print(str1) str2=_concat_("Java", "Python", "C#","C","R","Matlab","C++","JavaScript",sep="\t") print(str2)
執行結果:
解析:
_concat_(*args, sep="/"):中*args元組引數,前文講過。
sep="/":指定格式進行引數預處理
5、引數列表的分拆,* 操作符來自動把引數列表拆開
例項演示:
def _argList_(name, URL='man', age='18'): print("-- 我在部落格園社群申請一個賬號,名字是:",name, end=' ') print(".個人主頁:", URL, "歡迎訪問.", end=' ') print("我在這裡不斷成長,今年", age, "!") data = {"name": "伏草惟存", "URL": "http://www.cnblogs.com/baiboy/", "age": "4歲7個月"} _argList_(**data)
執行結果:
解析:
**data表示字典引數,前文介紹過,如果字典引數比較長我們可以將其封裝到一個字典data裡面,然後用**data傳參。
end=' ': 表示連線成一句輸出。
6、 Lambda 形式,Lambda 形式可以用於任何需要的函式物件
例項演示:
def _makeincrementor_(n): return lambda x: x + n f = _makeincrementor_(42) print(f(1))
執行結果:
解析:
函式的呼叫很清晰不用說了,主要
lambda x: x + n
C#同學都比較熟悉這個形式了,x=x+n。f = _makeincrementor_(42)得出f=42,f(1)=x+1,此時x=42,故得出結果43
7、參考文獻和推薦資料
相關推薦
【Python五篇慢慢彈(3)】函式修行知python
作者:白寧超 2016年10月9日21:51:52 摘要:繼<快速上手學python>一文之後,筆者又將python官方文件認真學習下。官方給出的pythondoc入門資料包含了基本要點。本文是對文件常用核心要點進行梳理,簡單冗餘知識不再介紹,作者假使你用c/java/c#/c++任一
【Python五篇慢慢彈(4)】模組異常談python
作者:白寧超 2016年10月10日12:08:31 摘要:繼<快速上手學python>一文之後,筆者又將python官方文件認真學習下。官方給出的pythondoc入門資料包含了基本要點。本文是對文件常用核心要點進行梳理,簡單冗餘知識不再介紹,作者假使你用c/java/c#/c++任
【Python五篇慢慢彈(5)】類的繼承案例解析,python相關知識延伸
作者:白寧超 2016年10月10日22:36:57 摘要:繼<快速上手學python>一文之後,筆者又將python官方文件認真學習下。官方給出的pythondoc入門資料包含了基本要點。本文是對文件常用核心要點進行梳理,簡單冗餘知識不再介紹,作者假使你用c/java/c#/c++任
【Python五篇慢慢彈】資料結構看python
作者:白寧超 2016年10月9日14:04:47 摘要:繼<快速上手學python>一文之後,筆者又將python官方文件認真學習下。官方給出的pythondoc入門資料包含了基本要點。本文是對文件常用核心要點進行梳理,簡單冗餘知識不再介紹,作者假使你用c/java/c#/c++任一
【Python五篇慢慢彈】快速上手學python
作者:白寧超 2016年10月4日19:59:39 摘要:python語言儼然不算新技術,七八年前甚至更早已有很多人研習,只是沒有現在流行罷了。之所以當下如此盛行,我想肯定是多因素造成了,當然市場需求的重要因素。吳軍博士對大資料流行的解釋與python流行或許有些默契。資料一直以來都存在,只是在歷
# 【nodejs原理&原始碼賞析(3)】欣賞手術級的原型鏈加工藝術
目錄 一. 概述 二. 原型鏈基礎知識 三. Worker類的原型鏈加工 四. 例項的生成 五. 最後一個問題 六. 一些心得 示例程式碼託
python爬微信公眾號前10篇歷史文章(3)-lxml&xpath初探
操作 其他 正則 串操作 容器 pan 對象 tail 創建 理解lxml以及xpath 什麽是lxml? python中用來處理XML和HTML的library。與其他相比,它能提供很好的性能, 並且它支持XPath。 具體可以查看官方文檔->http://
【Unity 3D 5.6版本使用(3)】點選物體彈出視窗顯示狀態
emmm直接看程式碼 using System.Collections; using System.Collections.Generic; using UnityEngine; public class ShowWindow : MonoBehavio
功能第五篇——批量處理(JDBC)
需要 res col dsta 添加 name call table creat 綜述 批量處理一般指批量插入,批量更新,刪除通過可
【雲安全與同態加密_調研分析(3)】國內雲安全組織及標準——By Me
pac 調研 通信 bsp group 移動 網絡通信 body 中興 ◆3. 國內雲安全組織及標準◆ ◆雲安全標準機構(主要的)◆ ◆標準機構介紹◆ ◆相關標準制定◆ ◆建立的相關模型參考◆ ◆備註(其他參考信息)◆ ★中國通信標準化協會(CCSA
【Selenium2+Java自動化(3)】-操作瀏覽的基本方法
臨時文件 mage 關閉 log 開始 str 打開 img bsp 前言 前面已經把環境搭建好了,這從這篇開始,正式學習selenium的webdriver框架。我們平常說的 selenium自動化,其實它並不是類似於QTP之類的有GUI界面的可視化工具,我們要學的是
【深入Java虛擬機(3)】:類初始化
不同 main class out pri ref 另一個 字節碼 被動引用 類初始化是類加載過程的最後一個階段,到初始化階段,才真正開始執行類中的Java程序代碼。虛擬機規範嚴格規定了有且只有四種情況必須立即對類進行初始化:遇到new、getstatic、putstati
神經網路學習(3)————BP神經網路以及python實現
一、BP神經網路結構模型 BP演算法的基本思想是,學習過程由訊號的正向傳播和誤差的反向傳播倆個過程組成,輸入從輸入層輸入,經隱層處理以後,傳向輸出層。如果輸出層的實際輸出和期望輸出不符合
python Deep learning 學習筆記(3)
本節介紹基於Keras的使用預訓練模型方法 想要將深度學習應用於小型影象資料集,一種常用且非常高效的方法是使用預訓練網路。預訓練網路(pretrained network)是一個儲存好的網路,之前已在大型資料集(通常是大規模影象分類任務)上訓練好 使用預訓練網路有兩種方法:特徵提取(feature ext
python之類與對象(3)
target 實例化 定義 方法 int () a* 創建 但是 4. 類的初始化函數__init__(): 本章參考:https://blog.csdn.net/hellocsz/article/details/82795514 原作者: hellocsz 總結
Esper學習筆記五:EPL語法(3)
1.Aggregation 類似於SQL中的聚合函式,EPL中聚合函式格式如下: aggregate_function([all|distinct] expression) aggregate_function就是聚合函式的名字,比如avg,sum等。expression通常是事件
【DirectX11】【學習筆記(3)】修改三角形顏色
本章內容主要是關於如何修改我們的著色器,頂點結構,包括輸入佈局(layout) 賦值給每個頂點的顏色,最終會在整個三角形上進行插值。 Effects File 在fx檔案中我們建立了頂點和畫素著色器。 首先我們在檔案裡建立一個新的結構體,這個結構體是VS的返回型別
【Java基礎(3)】---- 安裝maven外掛
一. 簡介 eclipse 支援 maven專案,但是沒有 maven 外掛需要自己安裝 maven 外掛,我之前安裝 maven 外掛用過離線安裝,總會有 maven 外掛與 eclipse 版本不一致的問題。所以本篇文章我只介紹 maven 外掛的線上安裝方法。二
Python自然語言處理實戰(3):中文分詞技術
3.1、中文分詞簡介 在英文中,單詞本身就是“詞”的表達,一篇英文文章就是“單詞”加分隔符(空格)來表示的,而在漢語中,詞以字為基本單位的,但是一篇文章的語義表達卻仍然是以詞來劃分的。 自中文自動分詞被提出以來,歷經將近30年的探索,提出了很多方法,可
【phaser.js學習筆記(3)】開發H5遊戲“穿越小行星”並適配微信小遊戲
這篇筆記主要記錄使用phaser.js開發一個完整HTML5遊戲的整個過程,並將web端程式適配到微信小遊戲。 1、遊戲基本架構由於phaser社群目前僅有phaser2對微信小程式的支援,因此我選擇phaser v2.6.2作為遊戲的引擎。為便於開發除錯,以單獨的phas