博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
函数(二)
阅读量:5093 次
发布时间:2019-06-13

本文共 1749 字,大约阅读时间需要 5 分钟。

1.函数的动态参数:

  1.*args   位置参数动态传参

    

1 def fun(a,b,c,d,e):2     print(a,b,c,d,e)3 fun(1,2,3,4,5)

结果:1 2 3 4 5

顺序:位置参数=>*args=>默认值参数

*在这里表示接收位置参数的动态传参,接收到的是元组

 

1 def fun(a,*b,c=5): #参数名是b,*表示动态传参2     print(a)3     print(b)4     print(c)5 fun(1,2,3,4)

结果为:1

     2 3 4

     5

将第一个值赋值给a,后面的值都给b

  2.**kwargs  关键字参数动态传参

    

1 def fun(a,**kwargs):2     print(a)3     print(args)4 fun(1,b=2,c=3)

结果为:

    1

    {'b':1,'c':2}

**在这里表示的是接收关键字的动态传参,接收到的是字典

顺序:位置参数,*args,默认值参数,**kwargs

以上参数可以随意搭配使用

 

1  def fun(a, *args, c="哈哈",  **kwargs):2      print(a, args, c, kwargs)3  fun(1, 2, 3, 4,5, 6)

结果为:

    1,(2,3,4,5,6),哈哈,{}

单行注释#

多行注释'''  '''

1 def fun(a,b):2     """3     #这个函数是用来计算a和b的和4     :param a:#第一个数据5     :param b:#第二个数据6     :return:#返回的是两个数的和7     """8     return a+b9 fun(1,2)

 

接收所有参数

def fun(*args,**kwargs):

  print(args,kwargs)

fun(1,2,3,a=4,b=5)

 

*在形参位置:聚合(位置参数)

1 def fun(*lst):2     print(lst)3 4 lst = [1,2,3,4,5]5 fun(lst)

结果为:([1,2,3,4,5])

 

 

*在实参位置:打散

1 def fun(*lst):2     print(lst)3 4 lst = [1,2,3,4,5]5 fun(*lst)#把list,tuple,set,str进行迭代打散

结果为:(1,2,3,4,5)

 

**在形参位置(聚合成关键字参数)

 

1 def fun(**kwargs):2     print(kwargs)3 dic = {
"name":"abc","age":18}4 fun(**dic)#**在实参位置打散成关键字参数

结果为:

{"name":"abc","age":18}

 

2.命名空间

  1.内置名称空间

  2.全局名称空间

  3.局部名称空间

1 a = 10#全局名称空间    2 def fun():#fn也在全局名称空间3     b = 20#局部名称空间4     print(a)5 fun()

 

globals()可以查看全局作用域中的内容

locals()可以查看当前作用域中的内容

3.global和nonlocal

global:

1 a = 10#全局变量,本身不安全,不能随意修改2 def fun():3     global a#  1.可以把全局中的内容引入到函数内部,2.在全局创建一个变量4     a = 205     a += 106     print(a)7 fun()

nonlocal:

1 a = 102 def outer():3     def inner():  #在inner中改变a的值4         nonlocal a  #寻找外层函数中离他最近的那个变量5             a = 206     inner()7 outer()

函数可以互相嵌套

 

转载于:https://www.cnblogs.com/s593941/p/9451769.html

你可能感兴趣的文章
timer定时器
查看>>
CSUOJ 1170 A sample problem
查看>>
工厂模式
查看>>
设计模式 -- 模版模式
查看>>
iconfont-矢量图标字体的运用
查看>>
数字、字符串操作
查看>>
SVN Error: Unreadable path encountered; access denied;
查看>>
集合点(lr_rendezvous)
查看>>
LeetCode 82. 删除排序链表中的重复元素 II
查看>>
.第一天.net 学习理论
查看>>
架构心得
查看>>
98.TCP通信传输文件
查看>>
python学习笔记第四节
查看>>
信息反馈—冲刺06
查看>>
VGG
查看>>
IDEA的Database表的基本操作
查看>>
CSS 内边距 和尺寸(收藏)
查看>>
Collection的另外一个子类LinkedList&Set集合
查看>>
链表反转
查看>>
关于typedef的用法总结
查看>>