一、函数的参数--动态传参

1.动态接收位置参数

1.1在参数位置编写*表示接收任意多个内容

def chi(*food):
print("我要吃", food)
chi("⼤大⽶米饭", "⼩小⽶米饭")
结果:
我要吃 ('⼤大⽶米饭', '⼩小⽶米饭') # 多个参数传递进去. 收到的内容是元组tuple

1.2动态接收参数的时候要注意: 动态参数必须在位置参数后面

def chi(a, b, *food):
  print("我要吃", a, b, food)
chi("⼤米饭", "⼩米饭", "馒头", "⾯面条") # 前两个参数用位置参数来接收, 后⾯的参数⽤
动态参数接收

1.3默认值参数写在动态参数前面,位置参数,>动态参数*,>默认值参数

def chi(a, b, *food, c="娃哈哈"):
print(a, b, food, c)
chi("香蕉", "菠萝") # 香蕉 菠萝 () 娃哈哈 默认值⽣生效
chi("香蕉", "菠萝", "葫芦娃") # 香蕉 菠萝 ('葫芦娃',) 娃哈哈 默认值⽣生效
chi("香蕉", "菠萝", "葫芦娃", "口罩") # 香蕉 菠萝 ('葫芦娃', '口罩') 娃哈哈 默
认值⽣生效

2.动态接收关键字参数

def func(**kwargs):
print(kwargs)
func(a=1, b=2, c=3)
func(a=1, b=2)
结果:
{'a': 1, 'b': 2, 'c': 3}
{'a': 1, 'b': 2}

位置参数 > *动态参数 > 默认值参数 > **关键字参数

2.1动态参数的另⼀一种传参⽅方式:在实参位置上给⼀个序列,可对象前⾯加个*表示把这个序列按顺序打散.

def fun(*args):
print(args)
lst = [1, 4, 7]
fun(lst[0], lst[1], lst[2])
fun(*lst) # 可以使⽤用*把⼀一个列列表按顺序打散
s = "臣妾做不不到"
fun(*s) # 字符串也可以打散, (可迭代对象)

2.2 在形参的位置上的* 表示把接收到的参数组合成一个元组,如果是一个字典, 那么也可以打散. 不过需要用两个*。

二、命名空间

1.命名空间的分类:

1).全局命名空间:在函数之外的变量

2).局部命名空间 :在声明函数里面的变量

3).内置命名空间:python内置的命名如list tuple

2.加载顺序:

1).内置命名空间

2).全局命名空间

3).局部命名空间

3.取值顺序:

1).局部命名空间

2).全局命名空间

3).内置命名空间

4.作用域: 作⽤域就是作用范围, 按照生效范围来看分为 全局作用域和局部作用域

全局作用域: 包含内置命名空间和全局命名空间. 在整个文件的任何位置都可以使用(遵循从上到下逐行执行)。

局部作用域: 在函数内部可以使用。

我们可以通过globals()函数来查看全局作⽤用域中的内容, 也可以通过locals()来查看局部作
⽤用域中的变量量和函数信息

a = 10
def func():
a = 40
b = 20
def abc():
print("哈哈")
print(a, b) # 这⾥里里使⽤用的是局部作⽤用域
print(globals()) # 打印全局作⽤用域中的内容
print(locals()) # 打印局部作⽤用域中的内容
func()

三、函数的嵌套

不讲了!哼!

python day10 参数,命名空间的更多相关文章

  1. 九. Python基础(9)--命名空间, 作用域

    九. Python基础(9)--命名空间, 作用域 1 ● !a 与 not a 注意, C/C++可以用if !a表示if a == 0, 但是Python中只能用if not a来表示同样的意义. ...

  2. Python函数参数默认值的陷阱和原理深究"

    本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...

  3. Java可变参数 & Python可变参数 & Scala可变参数

    Java 可变参数的特点: (1).只能出现在参数列表的最后: (2)....位于变量类型和变量名之间,前后有无空格都可以: (3).调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体 ...

  4. python函数参数的pack与unpack

    python函数参数的pack与unpack 上周在使用django做开发的时候用到了mixin(关于mixin我还要写一个博客专门讨论一下,现在请参见这里),其中又涉及到了一个关于函数参数打包(pa ...

  5. Python中参数是传值,还是传引用?

    在 C/C++ 中,传值和传引用是函数参数传递的两种方式,在Python中参数是如何传递的?回答这个问题前,不如先来看两段代码. 代码段1: def foo(arg): arg = 2 print(a ...

  6. Python函数参数的五种类型

    之前项目需求,需要通过反射获取函数的参数,python中可以通过函数签名(signature)来实现. 首先需要了解函数参数的类型,Python的参数类型一共有5种:POSITIONAL_OR_KEY ...

  7. Python 关于Python函数参数传递方式的一点探索

    关于Python函数参数传递方式的一点探索 by:授客 QQ:1033553122 实践代码 #!/usr/bin/env python # -*- coding:utf-8 -*- __author ...

  8. 笔记:Python 默认参数必须指向不变对象

    笔记:Python 默认参数必须指向不变对象 学习记录 >>> def add_end(L=[]): L.append('END') return L >>> ad ...

  9. python 函数参数介绍

    python 函数参数介绍 python 使用过程总,总会遇到 *args,**kw形式的参数,总是一头雾水,而且网上介绍的或是叫法不一,为此专门深入实践进而了解了函数参数的使用 具体请看代码 #-* ...

随机推荐

  1. python-MongoDB 非关系型数据库

    一 简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库1.易用性 MongoDB是一个面向文档(document-oriented)的数据库,而不是关系型数据库.不采用关系型主要是为了获得 ...

  2. Java虚拟机JVM简单理解

    Java虚拟机JVM的作用: Java源文件(.java)通过编译器编译成.class文件,.class文件通过JVM中的解释器解释成特定机器上的机器代码,从而实现Java语言的跨平台. JVM的体系 ...

  3. HTTP的连接过程

    一.HTTP通信机制是在一次完整的HTTP通信过程中,Web浏览器与Web服务器之间将完成下列7个步骤: 1.域名解析 2.发起TCP的3次握手 3. Web浏览器向Web服务器发送http请求命令  ...

  4. Alibaba Java Coding Guidelines

    阿里巴巴于10月14日在杭州云栖大会上,正式发布众所期待的<阿里巴巴Java开发规约>扫描插件!该插件由阿里巴巴P3C项目组研发.P3C是世界知名的反潜机,专门对付水下潜水艇,寓意是扫描出 ...

  5. Oracle中的instr()函数 详解及应用

    1)instr()函数的格式  (俗称:字符查找函数) 格式一:instr( string1, string2 )    /   instr(源字符串, 目标字符串) 格式二:instr( strin ...

  6. Python装饰器--decorator

    装饰器 装饰器实质是一个函数,其作用就是在不改动其它函数代码的情况下,增加一些功能.如果我们需要打印函数调用前后日志,可以这么做 def log(func): print('%s is running ...

  7. 【LeetCode】数组移除元素

    链表等复杂数据结构用多了,简单的数组操作也不能遗忘! 1. 给定一个有序数组,移除所有重复元素并返回新的数组长度,不能分配额外数组的内存空间. e.g. 给定输入的数组 = [1,1,2],函数应当返 ...

  8. How to import a GitHub project into Eclipse

    Assuming you have created a project in GitHub, these are the steps to import it into Eclipse. First, ...

  9. python(2)之列表

    列表的使用 names=["zhangyang","liming",["sese","popo"],"xiao ...

  10. [x] 封装、继承,多态

    那么多态的作用是什么呢,封装可以使得代码模块化,继承可以扩展已存在的代码,他们的目的都是为了代码重用. 而多态的目的则是为了接口重用.也就是说,不论传递过来的究竟是那个类的对象,函数都能够通过同一个接 ...