1. 程式人生 > >【Python五篇慢慢彈(3)】函式修行知python

【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