函数1

函数的定义:
def 函数名():
  pass

def my_len():
  ls = [1,2,3,4,11,18]
  for count in ls:
    count += 1
  print(count)
函数的调用方法:
函数名() # 执行函数 函数名()

函数的优点:
减少代码的重复率;
增强代码的阅读性。

函数到底是什么?函数最主要的目的:封闭一个功能。


函数的返回值: 要用到 return 语句
# 函数的声明: def 函数名():
def my_len():      # 这个函数没有返回值
    ls = [1,2,3,4,11,18]
    for count in ls:
        count += 1
    print(count)
my_len()
result = my_len()  # 函数没有返回值,用一个变量去接收结果,就是:None
print(result)   # 输出结果: None

# 要让函数返回址,就要用到 return 语句, return 值  ;若没有,没有跟值 ,返回值 也是 None

# return 后面没有跟值的情况:
def demo1():
    a = 5
    return
print(demo1())   # None

# return 后面跟一个值 的 情况:
def demo2():
    a = 5
    return a
result = demo2()
print(result,type(result))  # 5 <class 'int'>

def demo3():
    tu = (1,3,'abc')
    return tu
result = demo3()
print(result,type(result))  # (1, 3, 'abc') <class 'tuple'>
# return 后面跟一个值的情况总结:值是什么类型,返回也相应的类型。即原封不动地返回。

# return 后面跟多个值的情况: 值 与 值 之间以‘逗号’分割

def demo4():
    x = 5
    y = 'hello world'
    dic = {'name':'chris'}
    return x,y,dic
ret = demo4()  # 整体是函数的执行者。在工作中,函数中尽量不要出现print
print(ret,type(ret))   #  (5, 'hello world', {'name': 'chris'}) <class 'tuple'>

# 可见,如果return 返回多个值的情况,将return 后面的值,放进一个元组,整个返回

# 由于返回的是一个元组,可以分别赋值
x,y,dic = demo4()   # 分别赋值时, = 号两边的元素个数相同,一一对应
print(x,y,dic)      # 5 hello world {'name': 'chris'}

 函数的参数:

# 函数的传参:
# 实参
#       位置参数:   按照顺序,一一对应
#       关键字参数: 可以不按照顺序,但是必须一一对应
#       混合参数: 关键字参数一定要在位置参数后面
# 形参
#       位置参数:按照顺序,一一对应
#       默认参数:
l1 = [1,3,5,7,9,11]
s = "jump river haha"
def obj_len(argv):  # 形式参数,形参
    # 函数体
    count = 0
    for item in argv:
        count += 1
    return count
length = obj_len(l1)  # 函数的执行者(实参) 实际的参数
print(length)  # 6
length = obj_len(s)    # 函数的执行者(实参) 实际的参数
print(length)  # 15

#实参 之 位置参数:

def func1(x,y):
    print(x,y)
func1(1,2)   #  通过位置传参数,一一对应, 1 传给形参 x , 2 传给形参 y.
# 2个函数,1个函数 求和;2个函数 将大的数给我返回
def sum1(x,y):
    return x + y
a = 10
b = 15
print(sum1(a,b))

def compare(x,y):
    return x if x > y else y    # 三目运算符
x = 3
y = 2001
print(compare(x,y))
# 三元运算符:只针对简单的if else 这样的结构,才可以使用。

# 关键字参数,可以不按照顺序,但是必须一一对应。
def func2(x,y):
    return x == y           # return后面,可以是关系表达式,但不能是赋值表达式
print(func2(y=10,x=7))

# 混合传参: 关键字参数一定要在位置参数后面。
# def func3(a,y,n,x,n):    # 在函数的定义中,不能有相同的参数 SyntaxError: duplicate argument 'n' in function definition
#     return a,y,x,n
# name = 'chris'
# print(func3(100,200,'chris',x=18,n=28))

# def func3(a,y,n,x,n1):
#     return a,y,x,n
# name = 'chris'
# print(func3(100,200,'chris',x=18,n1=28))

# 形参角度
#       位置参数:按照顺序,一一对应
#       默认参数: 给其传值,将原来默认值给覆盖掉,不传值,不报错,使用默认值
#                   应用场景:不经常改变的参数,但是一直在用。
def func4(x,y,z=100):
    return x, y, z
print(func4(10,20)) # (10,20,100)
print(func4(10,20,150)) # (10,20,150)
































def test(x,z,y=100): # 函数定义时,默认参数放在最后
return x + y + z
#print(test(100,2)) # SyntaxError: non-default argument follows default argument 非默认参数不能跟随默认参数后
print(test(x=100,z=100))
print(test(100,200))

猜你喜欢

转载自www.cnblogs.com/chris-jia/p/9480677.html