7.9 初识函数定义与调用

Posted powertips

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7.9 初识函数定义与调用相关的知识,希望对你有一定的参考价值。

在了解函数之前,我们先想象一个这样的场景:

  如果现在len方法不能用了,我们要如何用代码计算‘kilobitten’这个字符串的长度?

str1 = kilobitten
length = 0
for i in str1:
    length += 1
print(length)  # 10

  此时又有一个需求,要计算另一个字符串的长,“New Centry”,我们该怎么做呢?如法炮制

str1 = kilobitten
length = 0
for i in str1:
    length += 1
print(length)  # 10

str2 = The New Centry length2 = 0 for j in str2: length2 += 1 print(length2) # 14

  不难发现,虽然这样可以满足需求,但是造成了代码冗余

  并且对比len方法来说,这种实现方式的代码可读性较差

str1 = kilobitten
str2 = The New Centry
print(len(str1))  # 10
print(len(str2))  # 14

  这时候,我们就希望能有个方法能像len那样,可以直接使用,来计算长度。

于是,就引入了函数的概念。

函数

  函数,就是具有某个具体功能的工具

为什么要有函数?

  提供开发效率
  减少代码冗余
  提高程序的扩展性

定义一个函数

  ‘def‘ 是定义函数的关键字

  函数名:函数名的命名规则和变量名一致

    1.不能以关键字命名(**重要**)

    2.函数名也应该做到见名知意

  需要注意的是:

    函数在定义的时候只检测函数体语法 不执行函数体代码

1 s = kilobitten
2 
3 def my_len():  # 自定义函数 # 在定义函数时,以下4行代码并不执行
4     n = 0
5     for i in s:
6         n += 1
7     print(n)  # 10
res = my_len()
print(res)  # None

    调用函数的固定格式

      函数名+括号
      函数名只要遇到括号会立即执行函数体代码
      代码中遇到函数名加括号 优先级最高
      先去执行函数 再看下面的代码

    我们自己写的函数现在的问题

      1.没有返回值 只能固定的执行打印操作
      2.只能够固定的统计某一个容器类型的长度

返回值

  上面我们自己写的代码,虽然可以正确运行但不能像len方法那样有返回值。

  函数内要想返回给调用者值 必须用关键字return

  

  关于return有五种情况

  1.不写return

# 不写return:函数默认返回None
def func():
    print(hahaha)  # hahaha
res = func()
print(res)  # None

  2.只写return

# 只写return:return除了可以返回值之外 还可以直接结束整个函数的运行
# 只写return 返回的也是None(None就表示什么都没有)
def func():
    l = [jason,egon,tank]
    while True:
        for i in l:
            if i == egon:  # 当i为egon的时候 直接结束函数运行
                # 下面的return相当于break
                return
                # print(‘asdasdkljlsjadl‘)  # 这一行代码拥有都不会运行
            print(i)  # jason
res = func()
print(res)  # None

  3.写return None

# 写return None:跟上面的只写return是一样的
def func():
    return None
res = func()
print(res)  # None

  4.写return返回一个值

# 写return返回一个值:这个值可以是python任意数据类型
def func():
    return 123  # 123
def func1():
    return [1,2,3]  # [1,2,3]
def func2():
    return name:jason  # ‘name‘: ‘jason‘
def func3():
    return (1,)  # (1,)
def func4():
    return 1,2,3,4,5  # 1, 2, 3, 4, 5
def func5():
    return True  # True
print(func(),func1(),func2(),func3(),func4(),func5())
# 123 [1, 2, 3] ‘name‘: ‘jason‘ (1,) 1, 2, 3, 4, 5 True

  5.写return返回多个值

# 写return返回多个值:return会自动将多个值以元组的形式返回给调用者
‘‘‘
1.为什么组织成元组返回
    函数不希望自己处理的结果被修改
2.如何不返回元祖
‘‘‘


def func():
    return 1, 2, 3, 4
res0 = func()
print(res0)  # 返回的是(1, 2, 3, 4)


def func1():
    return a, b, c
res = func1()
print(res)  # 返回的是 (‘a‘, ‘b‘, ‘c‘)


def func2():
    return [1, 2, 3], [1, 2, 3], [1, 2, 3]  # ([1, 2, 3], [1, 2, 3], [1, 2, 3])


res1 = func2()
print(res1)


def func3():
    return name: jason, username: tank, 
        user_name: egon  # (‘name‘: ‘jason‘, ‘username‘: ‘tank‘, ‘user_name‘: ‘egon‘)


res2 = func3()
print(res2)


# 返回多个值 并且不想让return帮你做处理  自己手动加上你想返回的数据类型符号
def func4():
    return [[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 34]]


res = func4()
print(res)

  # 1.所有的函数都有返回值,无论你写不写return
    python中所有的函数都有返回值 不写的情况下默认返回None

  # 2.光写return 或者return None并不是为了考虑返回值 而是为了结束函数的运行

以上是关于7.9 初识函数定义与调用的主要内容,如果未能解决你的问题,请参考以下文章

初识函数

初识函数

Python 基础之函数初识与函数参数

python 函数初识

函数初识:定义,调用,返回值,参数

Python基础-函数初识