Day05-Python函数

1、定义一个函数

规则:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()
  • 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号 : 起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。

一般格式:

def 函数名(参数列表):
    函数体

  

hello函数:

def hello(name):
    print("Hello", name)
#print可以一次输出多个对象,对象之间用逗号分隔。(还以为是用加号呢!)
# 调用函数
hello("lamb")

  

max函数

def max(a,b):
    if(a>=b):
        return a
    else:
        return b

print(max(2,3))
#3

  

因为python函数的用法其实和java、c等类似,就不详细说了。对了,python函数的形参不用声明类型,毕竟声明变量是也不需要声名类型嘛……

提一下不定长参数(感觉怎么辣么像指针!!!?)

1、一个*号的参数

加了星号 * 的形参会以元组(tuple)的形式导入,存放所有未命名的变量参数。实参可以为空,即传递一个空元组。如果单独出现星号 * 后的参数必须用关键字传入。

def printinfo( arg1, *vartuple ):
   "打印任何传入的参数"
   print ("输出: ")
   print (arg1)
   print (vartuple)
 
# 调用printinfo 函数
printinfo( 70, 60, 50 )

#输出70 (60,50)

  

2、两个*号的形参

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

def printinfo( arg1, **vardict ):
   "打印任何传入的参数"
   print ("输出: ")
   print (arg1)
   print (vardict)
 
# 调用printinfo 函数
printinfo(1, a=2,b=3)

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

  

匿名函数:

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

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

  • lambda 只是一个表达式,函数体比 def 简单很多。
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda 函数拥有自己的命名空间,且不能访问自己参数列表之外或全局命名空间里的参数。
  • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
sum = lambda arg1, arg2: arg1 + arg2
 
# 调用sum函数
print ("相加后的值为 : ", sum( 10, 20 ))
print ("相加后的值为 : ", sum( 20, 20 ))

  

  

强制位置参数:

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, b=20, c=30, d=40, e=50, f=60)   # b 不能使用关键字参数的形式
f(10, 20, 30, 40, 50, f=60)           # e 必须使用关键字参数的形式 如果单独出现星号 * 后的参数必须用关键字传入。
posted @ 2021-09-24 20:01  小绵杨Lamb  阅读(50)  评论(0)    收藏  举报