1. 程式人生 > >python 函式的引數

python 函式的引數

位置引數:
def power(x, n): s = 1 while n > 0: n = n - 1 s = s * x

return s

以上的函式旨在於實現計算x的n次方

預設引數:
def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s
以上函式中,預設n=2,這樣情況下,不需要每次輸入n=2,只鍵入power(5)即可,而如果計算3次方時可以:

power(5,3),與vba類似,改變多個預設引數時,可以順序寫入,也可以直接調取引數名進行修改:

rnroll('adam','M',city='Shanghai')

預設引數容易出現的問題:
1:def add_end(L=None):
    if L is None:
        L = []
    L.append('END')
    return L
2:def add_end(L=[]):
    L.append('END')
    return L
以上兩個做對比:2中定義L為空,然後當呼叫add_end()時,自動生成[end],但再次呼叫時,就會出現[END,END]的情況,這是由於此時的add_end中已經有一個end

而第一個函式就不會出現該問題。

以上問題類似於VBA中重複新增的問題。

可變引數:
1:def calc(numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum
2:def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum
對比以上兩個函式:1在每次計算的時候,都需要裝載一個list,即calc([1,2,3]),而2則直接輸入即可calc(1,2,3)

這是由於*加上以後,自動將number的形式定義為接收tuple

那麼如果我們需要陣列中再次鍵入陣列怎麼辦?

>>> nums = [1, 2, 3]
>>> calc(*nums)‘只需要將需要鍵入的陣列錢再次加上*即可’
14
關鍵字引數:
def person(name, age, **kw):
    print('name:', name, 'age:', age, 'other:', kw)
除了必選引數外,還可以新增任意關鍵字
命名關鍵字引數:

如果要限制關鍵字引數的名字,就可以用命名關鍵字引數,例如,只接收cityjob作為關鍵字引數。這種方式定義的函式如下:

def person(name, age, *, city, job):
    print(name, age, city, job)
命名關鍵字引數必須傳入引數名,這和位置引數不同。如果沒有傳入引數名,呼叫將報錯:
命名關鍵字引數:
在Python中定義函式,可以用必選引數、預設引數、可變引數、關鍵字引數和命名關鍵字引數,這5種引數都可以組合使用。但是請注意,引數定義的順序必須是:必選引數、預設引數、可變引數、命名關鍵字引數和關鍵字引數。

相關推薦

Python函式引數和返回值

- 函式引數和返回值的作用 函式:封裝功能獨立的程式碼,在需要時通過函式名被呼叫 引數:外界希望在函式內部處理的資料 返回值:函式完成工作後,給呼叫者的一個結果 函式根據有無引數和返回值,可以相互結合,共有4種組合形式 1.無引數,無返回值 2.無引數,有返回值 3.有引數,無返回值

python函式引數的填坑之路

背景 最近在看廖雪峰老師的python3教程之函式的引數 受益匪淺,但是在實踐的過程中,發現了一些不解之謎 兩個錯誤 import _thread import time def func1(x): while x: print(x) x = x -1 _threa

Python 函式 引數傳遞

引數傳遞    在 python 中,型別屬於物件,變數是沒有型別的:        a=[1,2,3]        a="Runoob" &nbs

python 函式引數作為引用時

作為引數傳入函式中,執行結束後,實參到底會不會影響 1. 各種型別資料,引數名到底對應什麼? 如果你學過c或者c++, 你應該知道引用這個東西,我簡單的理解為,如果這個引數名上的地址,存的不是它的值,而是它對應值得位置,那就是引用。從上圖不難發現,python常用

python-函式引數和文件

四類引數 普通引數 預設引數 關鍵字引數 收集引數 關鍵字引數開始 語法 def func(p1=v1, p2=v2.....): func_body 呼叫函式: func(p1=value1, p2=value2......

一篇文章讓你掌握python函式引數的各種用法

  python的函式引數型別比較豐富,而且用法相對比較複雜,今天我們介紹幾種簡單常用的。 當然在學習Python的道路上肯定會困難,沒有好的學習資料,怎麼去學習呢? 學習Python中有不明白推薦加入交流群        

python函式引數的部分求值方法

在python中,呼叫函式時,會從左到右對所有引數表示式進行求值,使用functools模組中的partial()函式可以對函式引數進行部分求值。 程式示例: from functools import partial def f(x,y,z): return x

python函式引數定義及解析(包含帶星號引數

前言:python中函式引數的傳遞是通過賦值來傳遞的。函式的引數有兩個方面值得注意: 1.函式引數是如何定義的 2.在呼叫函式的過程中引數是如何被解析的 python函式引數的定義方式 func(arg1, arg2, …) 這是最常見的定義方式,一個函式

Python函式引數預設值的陷阱和原理深究 • cenalulu's Tech Blog

本文將介紹使用mutable物件作為Python函式引數預設值潛在的危害,以及其實現原理和設計目的 陷阱重現 我們就用實際的舉例來演示我們今天所要討論的主要內容。 下面一段程式碼定義了一個名為generate_new_list_with的函式。該函式的本意是在每次呼叫時都新建一個包含有給

python 函式引數(必選引數、預設引數、可選引數、關鍵字引數)

參考: ######################################################## 函式引數:必選引數、預設引數、可選引數、關鍵字引數 ##############################################

Python 函式引數形式

一、位置引數   根據定義的函式的引數位置來判斷引數的值。位置引數一旦定義,在呼叫函式時,就必須傳入對應的引數值。 def show_info(name, age): print("name: {0}, age: {1}".form

Python] Python函式引數中的*,** 以及不帶*的差異!

Python的函式定義中有兩種特殊的情況,即出現*,**的形式,加上不帶*的,三種情況,差異性在哪裡呢? 第一種:引數個數固定,可以帶引數名字,或者不帶名字。 第二種:引數個數任意,但不能帶引數名字,引數是tuple型別。 第三種,引數個數任意,但必須帶引數名字,引數是di

python函式引數(1)

(1)<1> 定義帶有引數的函式示例如下:def add2num(a, b): c = a+b print c <2> 呼叫帶有引數的函式以呼叫上面的add2num(a, b)函式為例:def add2num(a, b): c

python 函式引數的傳遞(引數帶星號的說明) 元組傳遞 字典傳遞

python中函式引數的傳遞是通過賦值來傳遞的。函式引數的使用又有倆個方面值得注意:1.函式引數是如何定義的 2.在呼叫函式的過程中引數是如何被解析 先看第一個問題,在python中函式引數的定義主要有四種方式:1.F(arg1,arg2,...)這是最常見的定義方式,一個函式可以定義任意個引數,每個引

Python 函式引數

簡述 在 Python 中,函式的定義非常簡單,滿足對應的語法格式要求即可。對於呼叫者來說,只需關注如何傳遞正確的引數,以及獲取相應的返回值就足夠了,無需瞭解函式的內部實現(除非想學習、跟蹤原始碼)。 話雖如此,但對於函式的定義來說,靈活性非常高。除了常規定

python函式引數詳解

值傳遞和引用傳遞區別如果你傳入的引數物件是可變物件:列表,字典,這個時候就是引用傳遞。如果你傳入的引數物件是不可變的物件:數字,元組,字串,這個時候就是值傳遞。對於值傳遞,函式內部修改的是引數的副本,不會改變原值;對於引用傳遞,函式內部修改了是變數的指向,從而相應對變數進行了

Python函式引數傳遞的問題

Python中的一些概念: 變數:沒有型別,可以指向任何物件 物件:有型別。物件分為可變物件和不可變物件 從id可以看出變數是沒有型別的,同一組資料指向不同的物件,id不同。 Python中引數傳遞是傳遞的變數的值,即變數所指向的物件的地址。 傳遞規律

python函式引數預設值

在stackoverflow上看到這樣一個程式: #! /usr/bin/env python # -*- coding: utf-8 -*- class demo_list: def __init__(self, l=[]): self.l =

python函式引數傳遞規則

1、宣告一個引數具有預設值引數的函式,如下: def hello(name = 'python')     print('你好',name) ---無引數傳遞直接呼叫函式,則為:你好,python--(hello) ---有引數傳遞時,如:hello('小明')--結果為:

關於Python函式引數傳遞方式--值傳遞?引用傳遞!

渣渣我在學習中遇到的一點問題,特地貼出來,由於我水平渣,所以如有問題,請多指教 經過測試可以發現: python3 不允許我們選擇引數傳遞方式,但是他已經全部採用了引用傳遞。有幾點需要注意: 1.引用傳遞可以當做值傳遞使用,只是你需要把他賦值給一個臨時變數副本,不要直接使