从可变长函数到legb

可变长参数

*

*形参

用元组接收接收多余的位置实参

约定俗成形参名为 *args

def f1(*args):#调用函数时,有多少个参数我就接收多少个
    res = 0
    for num in args:
        res += num
    return res

res = sum_self(1, 2, 3, 4)
print(res)   # 10

*实参

打散列表,然后以位置实参传给位置形参

def func(x, y, z, *args):
    print(x, y, z, args)

func(1, *(1, 2), 3, 4)

# 1 1 2 (3, 4)

**

**形参

用字典接收多余的关键字实参

约定俗成形参名为 **kwargs

def func(**kwargw):
    print(kwargw)

func(a=5)  # 接收关键字实参  {'a': 5}

**实参

打散字典,然后以关键字实参传给位置形参

def func(x, y, z, **kwargs):
    print(x, y, z, kwargs)

func(1, 3, 4, **{'a': 1, 'b': 2})        # 1 3 4 {'a': 1, 'b': 2}

*形参**形参

接收所有多余的参数

函数对象

作为函数的返回值

函数对象 == 函数名 , 变量对象可以做的函数对象也可以。函数对象的四大功能如下:

  1. 引用
  2. 当做容器类元素
  3. 当做参数传给一个函数
  4. 当做函数的返回值

函数嵌套

def 函数名():
    def 函数名():
        代码块

外面不能引用内部定义的函数

名称空间于作用域

内置名称空间

内置名称空间:存放Pyhton解释器自带的名字,如int、float、len

生命周期:在解释器启动时生效,在解释器关闭时失效

全局名称空间

全局名称空间:除了内置和局部的名字之外,其余都存放在全局名称空间

生命周期:在文件执行时生效,在文件执行结束后失效

局部名称空间

局部名称空间:用于存放函数调用期间函数体产生的名

生命周期:在文件执行时函数调用期间时生效,在函数执行结束后失效

执行顺序

内置--》局部--》全局

搜索顺序

从当前位置开始 局部--》全局--》内置--》报错

作用域

作用域关系在函数定义阶段就固定死了,与函数的调用无关

全局作用域

全局作用域的x和局部作用域的x没有半毛钱关系,可变数据类型除外

局部作用域

局部作用域1和局部作用域2的x没有半毛钱关系

global

局部可以修改全局的

nonlocal

局部的修改外层局部的

legb

原文地址:https://www.cnblogs.com/jimGraymane/p/11559725.html

时间: 2024-11-06 14:08:11

从可变长函数到legb的相关文章

PHP可变长函数方法介绍

1.三个重要函数 func_num_args()  返回实参个数 func_get_arg(i)    返回某个实参的值       func_get_args()        以数组的形式返回实参的所有值 示例: <?php function foo() { $numargs = func_num_args(); echo "Number of arguments: $numargs<br />\n"; if ($numargs >= 2) { echo &

[C]va_list可变长参数的使用

一.概述 运用标准C的头文件stdarg.h提供的宏可以实现函数的自定义传参个数: 二.语法 1.va_list是一个可变长参数类型,在使用可变长参数的函数中可以定义1个或多个va_list类型参数,等待va_start初始化后使用: va_list parg_1; va_list parg_2; 2.va_start作用是给va_list类型变量绑定一个起始值 宏原型: void va_start(va_list ap, last); ap是va_list类型变量: last是函数的最后一个固

C 可变长参数运用-----编写Lua的通用调用函数

1.C可变长参数 printf这个使用频繁的C语言函数的参数列表包含一个const char*的描述串,还有一个可变长参数(...) ,如下为printf的函数声明. int printf(const char * __restrict, ...) 在stdarg.h这个头文件中包含着对可变长参数进行操作的一些宏(x86平台为例): #define va_start(ap,v)( ap = (va_list)&v + _INTSIZEOF(v) ) #define va_arg(ap,t) ( 

深度探索C语言函数可变长参数

通常我们使用的C函数的参数个数都是固定的,但也有不固定的.比如printf()与scanf().如何自己动手实现一个可变参数函数,这个还是有点技巧的. 我们最常用的就是定义一个宏,使用printf或者printk,如下 #define wwlogk(fmt, args...) printk(fmt, ## args) 现在我们自己动手实现一个可变参数的函数,后面分析原理.首先看一个例子: #include <stdio.h> #include <stdarg.h> int Sum(

Python函数的可变长参数

# 非关键字可变长参数(元组*args),把N个非关键字参数参数转化为元组.# 当函数被调用的时候,所有形参(必须的和默认的)都将赋值给函数声明中对应的局部变量,剩下的非关键字参数按顺序插入到一个元组中.# 可变长参数元组必须在位置参数和默认参数之后.def func(arg1, arg2 = 9, *args):    print("arg1: %d" % arg1)    print("arg2: %d" % arg2)    for i in args:   

Python中函数的参数传递与可变长参数

1.Python中也有像C++一样的默认缺省函数 1 def foo(text,num=0): 2 print text,num 3 4 foo("asd") #asd 0 5 foo("def",100) #def 100 定义有默认参数的函数时,这些默认值参数位置必须都在非默认值参数后面. 调用时提供默认值参数值时,使用提供的值,否则使用默认值. 2.Python可以根据参数名传参数 1 def foo(ip,port): 2 print "%s:%d

ZMAN的学习笔记之Python篇:函数可变长参数

ZMAN的学习笔记之Python篇: 1.装饰器 2.函数“可变长参数” 这次来聊聊Python中函数的“可变长参数”,在实际中经常会用到哦~  一.什么是“可变长参数” “可变长参数”就是向一个函数传入不定个数的参数.比如我写一个函数:传入一个学生参加各科目考试的成绩,求平均分,如两个学生分别传入(92, 91, 88)和(88, 95),因为每个学生参加的考试个数不同,因此传入的参数个数也就不同了,遇到这种情况,我们在定义函数的时候,可以使用“可变长参数”. 二.在定义函数时使用“可变长参数

可变长参数的函数的写法

c语言中的可变长参数的函数小例子: #include <stdio.h> #include <stdarg.h> #include <assert.h> static int pp; void func1() { static int pp1; printf("hello world\n"); } void tiny_printf(char *format, ...) { int i; va_list ap; va_start(ap, format)

可变长参数、函数对象、嵌套、名称空间和作用域

目录 可变长参数.函数对象.嵌套.名称空间和作用域 一.可变长参数 1.1 可变长形参之* 1.2 可变长实参之* 1.3 可变长形参之** 1.4 可变长实参之** 二.函数对象 2.1.引用 2.2.当做实参参数传给一个形参参数 2.3.可以作为容器类数据类型中的元素 2.4 可以当做函数的返回值 三.函数的嵌套 3.1 函数的嵌套定义 3.2 函数的嵌套调用 四.名称空间和作用域 4.1 名称空间 4.1.1 内置名称空间 4.1.2 全局名称空间 4.1.3 局部名称空间 4.1.4 三