函数参数详解

实参

'''
位置实参:不用明确形参名的传参方式,一定按照位置给形参传值
关键字实参:必须明确形参名字与值为形参传值,可以不用按照位置

*****
注:混用
1.关键字实参必须出现在位置实参后
2.多个位置实参还是按照位置传参
3.关键字实参为没有从位置实参拿到值的形参传值,可以不用按照指定顺序
'''
def fn2(a, b, c, d, e, f):
    print(a, b, c, d, e, f)

fn2(10, 20, 30, e=100, f=500, d=200)

位置形参的范畴

  • 位置形参
# positional argument
def fn(a, b, c):
    print(a, b, c)

# 位置形参可以由 位置实参 与 关键字实参 来传值
fn(10, 20, 30)
fn(a=10, b=20, c=30)
  • 默认形参
def fn(a=10,b=20):
    print(a, b)

# 默认形参可以由 位置实参 与 关键字实参 来传值,还可以不用传值(采用自身默认值)
fn()
fn(20, 30)
fn(a=200, b=300)
fn(100)  # 就给a传
fn(b=100)  # 就给b传

# 混用
# 位置形参与默认形参同时存在,默认形参必须在后
def fn1(a,b,c=10,d=20):
    print(a, b, c, d)

# 位置形参必须传值,默认形参分情况传值
fn1(100, 200, d=1000)

  • 可变长形参
# 可变长形参会以 元组 形式接受 位置形参与默认形参未接受完的 所有传入的位置实参,用索引来取第几个
# 可变长形参只能由 位置实参 来传值  *****
def fn(a, b=10, *args):
    print(a, b)
    print(args)

# 小细节:可变长形参只能接受位置实参的值,位置实参还必须在关键字实参前,
#       导致默认形参只能由位置实参来传值
fn(1, 20, 100, 200) # 1给a  20给b,不能用b=20传  100,200给args

关键字形参范畴

# 前提:出现在 * 之后的形参
def fn(a, b=10, *, c, d=20, e):
    pass
# c,d,e都是出现在*之后,都是关键字形参,由于必须由 关键字实参 来传值,没有顺序的强行要求

# 可变长关键字形参:用来接收没有被关键字形参接收完的关键字形参,也只能由关键字实参来传值
# 用字典来存放数据
def fn(**kwargs):
    print(kwargs)
fn(a=10,b=20)  # {'a': 10, 'b': 20}

dic = {'x': 100, 'y': 200}
fn(**dic)  # {'x': 100, 'y': 200}

参数总结

def fn(a, b, c=10, *args, d, e=20, f, **kwargs):
    pass
# 位置形参:a、b
# 默认形参:c
# 可变长位置形参:args
# 无初值关键字形参:d、f
# 有初值关键字形参:e
# 可变长关键字参数:kwargs

# 1.位置形参与默认形参: 能用 位置实参 关键字实参 传值
# 2.可变长位置形参:只能 位置实参 传值
# 3.所以关键字形参:只能 关键字实参 传值

原文地址:https://www.cnblogs.com/xufengfan/p/11026105.html

时间: 2024-10-07 15:01:18

函数参数详解的相关文章

C语言中的system函数参数详解

http://blog.csdn.net/pipisorry/article/details/33024727 函数名: system 功   能: 发出一个DOS命令 用   法: int system(char *command); system函数已经被收录在标准c库中,可以直接调用 system()函数用于向操作系统传递控制台命令行,以WINDOWS系统为例,通过system()函数执行命令和在DOS窗口中执行命令的效果是一样的,所以只要在运行窗口中可以使用的命令都可以用SYSTEM()

PHP date函数参数详解

PHP date函数参数详解 作者: 字体:[增加 减小] 类型:转载 time()在PHP中是得到一个数字,这个数字表示从1970-01-01到现在共走了多少秒,很奇怪吧 不过这样方便计算, 要找出前一天的时间就是 time()-60*60*24; 要找出前一年的时间就是 time()*60*60*24*365 那么如何把这个数字换成日期格式呢,就要用到date函数了 $t=time();  echo date("Y-m-d H:i:s",$t); 第一个参数的格式分别表示: a -

CGBitmapContextCreate函数参数详解

CGBitmapContextCreate函数参数详解 函数原型: CGContextRef CGBitmapContextCreate ( void *data,   size_t width,   size_t height,   size_t bitsPerComponent,   size_t bytesPerRow,   CGColorSpaceRef colorspace,   CGBitmapInfo bitmapInfo ); 参数: data                  

python2.7函数参数详解

函数参数的匹配原则 位置:从左至右进行匹配 一般情况下,是通过位置进行匹配,把参数值传递给函数头部的参数名称,匹配顺序为从左到右. 关键字参数:通过参数名进行匹配 调用者可以定义哪一个函数接收这个值,通过在调用的时候使用参数的变量名,使用name=value这种语法. 默认参数:为没有传入值的参数定义参数值 如果调用时传入的值过于少的话,函数能够为参数设定默认的参数值,使用name=value这种语法. 可变参数:接收任意多基于位置或关键字的参数 函数能够使用特定的参数,它们是已字符*开头,接收

Python学习笔记5:函数参数详解

一.函数的定义格式: def 函数名(参数列表): 函数体 def fun1(a, b, c): return a + b + c 二.位置传递:位置对应 print(fun1(3 ,2 ,1)) 输出: 6 三.关键字传递:位置参数要出现在关键字参数之前 print(fun1(3 ,c = 1, b = 2)) 输出: 6 四.参数默认值:可以给参数赋予默认值(default) def fun2(a, b, c = 100): return a + b + c print(fun2(1, 10

ajax中error函数参数详解

xhr.status和error函数中的status是不一样的,error函数中的status主要包括:"success"."notmodified"."error"."timeout"."parsererror",而xhr.status如下所讲. 一.error:function (XMLHttpRequest, textStatus, errorThrown) { } (默 认: 自动判断 (xml 或

Dll入口函数参数详解...

DLL程序入口点函数:DllMain,注意:大小写是区别的(仅导出资源的DLL可以没有DllMain函数). 函数原型: BOOL APIENTRY DllMain( HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; } 参数意义: ①hModule参数:指向DLL本身的实例句柄:   ②ul_reason_for_call参数:指明了DLL被调用的原因,可以有以下4个取值: 1. DLL_

vue路由导航守卫及前置后置钩子函数参数详解

首先构建一个测试demo如下图: 接着来探讨路由配置界面 import Vue from 'vue' import Router from 'vue-router' // import HelloWorld from '@/components/HelloWorld' Vue.use(Router) const router = new Router({ routes: [{ path: '/', name: 'HelloWorld', component: resolve => require

Python函数参数详解

  Python函数定义时参数灵活,使用不同参数的组合不仅可以简化调用者的代码,还可以处理复杂的参数.函数的参数除了有必选参数外,还可以使用默认参数,可变参数,关键字参数和命名关键字参数. 位置参数 定义一个计算x^2的函数,以及一个计算x^n的函数 def calc1(x): return x * x def calc2(x, n): s = 1 for i in range(n): s *= x return s 对于这两个函数,其参数都是位置参数,同时也是必选参数,调用函数时实参需和形参一