当前位置: 网站首页>小程序开发>微信小程序

福安爱采购会员/58同城会员账户/百度竞价开户/百家号注册运营/推广公司网站-网站营销全网推广

发表日期: 2022-07-04 08:56:40 浏览次数:39

福安爱采购会员/58同城会员账户/百度竞价开户/百家号注册运营/推广公司网站-网站营销全网推广

网站建设.png

还有一种就是参数带两个星号 **基本语法如下:

def functionname([formal_args,] **var_args_dict ):
   "函数_文档字符串"
   function_suite   return [expression]

加了两个星号 ** 的参数会以字典的形式导入。

实例(Python 3.0+)

#!/usr/bin/python3  # 可写函数说明def printinfo( arg1, **vardict ):   "打印任何传入的参数"   print ("输出: ")   print (arg1)   print (vardict) # 调用printinfo 函数printinfo(1, a=2,b=3)

以上实例输出结果:

输出: 1{'a': 2, 'b': 3}

声明函数时,参数中星号 * 可以单独出现,例如:

def f(a,b,*,c):
    return a+b+c

如果单独出现星号 *,则星号 * 后的参数必须用关键字传入:

>>> def f(a,b,*,c):...     return a+b+c... >>> f(1,2,3)   # 报错Traceback (most recent call last):
  File "<stdin>", line 1, in <module>TypeError: f() takes 2 positional arguments but 3 were given>>> f(1,2,c=3) # 正常6>>>

匿名函数

Python 使用 lambda 来创建匿名函数。

所谓匿名,意即不再使用 def 语句这样标准的形式定义一个函数。

  • lambda 只是一个表达式,函数体比 def 简单很多。

  • lambda 的主体是一个表达式,而不是一个代码块。仅仅能在 lambda 表达式中封装有限的逻辑进去。

  • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。

  • 虽然 lambda 函数看起来只能写一行,却不等同于 C 或 C++ 的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

语法

lambda 函数的语法只包含一个语句,如下:

lambda [arg1 [,arg2,.....argn]]:expression

设置参数 a 加上 10:

实例

x = lambda a : a + 10print(x(5))

以上实例输出结果:

15

以下实例匿名函数设置两个参数:

实例(Python 3.0+)

#!/usr/bin/python3 # 可写函数说明sum = lambda arg1, arg2: arg1 + arg2 # 调用sum函数print ("相加后的值为 : ", sum( 10, 20 ))print ("相加后的值为 : ", sum( 20, 20 ))

以上实例输出结果:

相加后的值为 :  30相加后的值为 :  40

我们可以将匿名函数封装在一个函数内,这样可以使用同样的代码来创建多个匿名函数。

以下实例将匿名函数封装在 myfunc 函数中,通过传入不同的参数来创建不同的匿名函数:

实例

def myfunc(n):  return lambda a : a * n mydoubler = myfunc(2)mytripler = myfunc(3) print(mydoubler(11))print(mytripler(11))

以上实例输出结果:

2233

return 语句

return [表达式] 语句用于退出函数,选择性地向调用方返回一个表达式。不带参数值的 return 语句返回 None。之前的例子都没有示范如何返回数值,以下实例演示了 return 语句的用法:

实例(Python 3.0+)

#!/usr/bin/python3 # 可写函数说明def sum( arg1, arg2 ):   # 返回2个参数的和."   total = arg1 + arg2   print ("函数内 : ", total)   return total # 调用sum函数total = sum( 10, 20 )print ("函数外 : ", total)

以上实例输出结果:

函数内 :  30函数外 :  30

强制位置参数

Python3.8 新增了一个函数形参语法 / 用来指明函数形参必须使用指定位置参数,不能使用关键字参数的形式。

在以下的例子中,形参 a 和 b 必须使用指定位置参数,c 或 d 可以是位置形参或关键字形参,而 e 和 f 要求为关键字形参:

def f(a, b, /, c, d, *, e, f):
    print(a, b, c, d, e, f)

以下使用方法是正确的:

f(10, 20, 30, d=40, e=50, f=60)

以下使用方法会发生错误:

f(10, b=20, c=30, d=40, e=50, f=60)   # b 不能使用关键字参数的形式f(10, 20, 30, 40, 50, f=60)           # e 必须使用关键字参数的形式


默认参数必须放在最后面,否则会报:


SyntaxError: non-default argument follows default argument

# 可写函数说明

def printinfo( age=35,name):   # 默认参数不在最后,会报错

    "打印任何传入的字符串"

    print("名字: ", name)

    print("年龄: ", age)

    return

不跟随

   不跟随


  368***608@qq.com


5年前 (2017-07-28)

   夏老爷


  112***6553@qq.com


   参考地址


86

def(**kwargs) 把N个关键字参数转化为字典:


>>> def func(country,province,**kwargs):

...     print(country,province,kwargs)

... 

>>> func("China","Sichuan",city = "Chengdu", section = "JingJiang")

China Sichuan {'city': 'Chengdu', 'section': 'JingJiang'}

>>> 

夏老爷

   夏老爷


  112***6553@qq.com


   参考地址


5年前 (2017-07-28)

   dessertfox


  che***anren@tju.edu.cn


115

lambda 匿名函数也是可以使用"关键字参数"进行参数传递


>>> g= lambda x,y : x**2+y**2

>>> g(2,3)

13

>>> g(y=3,x=2)

13

同样地,lambda 匿名函数也可以设定默认值


>>> g= lambda x=0,y=0 : x**2+y**2

>>> g(2,3)

13

>>> g(2)

4

>>> g(y=3)

9

注意:如果只打算给其中一部分参数设定默认值,那么应当将其放在靠后的位置(和定义函数时一样,避免歧义),否则会报错。


dessertfox

   dessertfox


  che***anren@tju.edu.cn


5年前 (2017-08-14)

   Mr.Wang


  992***591@qq.com


110

关于可更改与不可更改类型, 以及其它语言的值类型与引用类型的介绍,一直一来感觉都不太严谨, 说法是否正确有待验证。


简单的说就是,不可更改类型传到函数里重新赋值后,两次输出值不一样,而可更改类型传到函数里对对象的"属性" 重新赋值后输出值一样。


这里照搬一下例子:



福安爱采购会员/58同城会员账户/百度竞价开户/百家号注册运营/推广公司网站-网站营销全网推广

400-111-6878
服务热线
顶部

备案号: 苏ICP备11067224号

CopyRight © 2011 书生商友信息科技 All Right Reserved

24小时服务热线:400-111-6878   E-MAIL:1120768800@qq.com   QQ:1120768800

  网址: https://www.768800.com  网站建设上往建站

关键词: 网站建设| 域名邮箱| 服务器空间| 网站推广| 上往建站| 网站制作| 网站设计| 域名注册| 网络营销| 网站维护|

企业邮箱| 虚拟主机| 网络建站| 网站服务| 网页设计| 网店美工设计| 网站定制| 企业建站| 网站设计制作| 网页制作公司|

400电话办理| 书生商友软件| 葬花网| 调温纤维| 海洋馆运营维护| 北京保安公司| 殡仪馆服务| 殡葬服务| 昌平殡葬| 朝阳殡葬|

预约专家

欢迎您免费咨询,请填写以下信息,我们收到后会尽快与您联系

  

服务热线:400-111-6878