06-01 函数的基本使用

一、什么是函数?

  • 函数就相当于具备某一个功能的工具
  • 函数的使用必须遵循一个原则:先定义、后调用

二、为什么要用函数?

  • 解决代码组织结构不清晰,可读性差
  • 解决代码冗余
  • 增加代码可维护性、可扩展性

三、理解函数先定义后调用时所发生的事情

"""
# 定义函数时发生的事情:
定义函数发生的事情:
    1、申请内存空间保存函数体代码
    2、将上述内存地址绑定给函数名,且函数名最好要使用动词。
    3、定义函数不会执行函数体代码,但是会检测函数体语法(例:x只是没有变量值不是语法错误.print('aaa'没有右括号,语法错误。)
    
# 调用函数发送的事情:
调用函数体发生的事情: 
    1、通过函数名找到函数的内存地址
    2、然后加括号就是在出触发函数体代码的执行。(函数的内存地址加括号就可以出发内部代码的执行。)
    3、调用阶段才会正真的执行函数体代码。
"""

四、定义函数:定义函数的三种形式(无参函数、有参函数、空函数)

# 定义语法伪代码示例:
"""
def 函数名(参数1,参数2,...):
    '''文档描述'''
    函数体
    return 值
"""

# 1、无参函数:函数体代码逻辑不依赖外部传来的参数时定义成无参函数。
def func1():
    # x  # 这里只是定义了变量名,但是没有绑定函数值,并不是语法的错误,定义时并不会报错。
    # print('xxx'  # 这里print功能没有加有右括号,属于语法的错误,会报错:SyntaxError: invalid syntax。
   	print('哈哈哈')
    print('哈哈哈')
    print('哈哈哈')

# 2、 有参函数:函数体代码逻辑依赖外部传来的参数时则需要定义为有参函数
def func2(x, y):
    print(x, y)

# 3、空函数,函数体代码为pass:在程序的开始,往往事先想好程序都需要完成什么功能,然后把所有功能都列举出来用pass充当函数体代码的“占位符”,这使得程序的体系结构清晰,且可读性强。
def func3(x, y):
    pass

func1()
'''
哈哈哈
哈哈哈
哈哈哈
'''
func2(1, 2) # 1 2
func3(1, 1)
  • 三种定义方式的应用场景
# 1、无参函数的应用场景
# 需求:接受用户的输入,把用户输入的内容做一个格式化的打印
def format_print():
    username = input("username>>:").strip()
    age = input("age>>:").strip()
    gender = input("gender>>:").strip()
    msg = f'名字:{username} 年龄:{age}  性别:{gender}'
    print(msg)

# 2、有参函数的应用场景
# 需求:打印,2个数的加法计算
def add(x, y):
    print(x + y)
add(1, 99)   # 100
add(299, 1)  # 300

# 需求:拿到,2个数的加法计算
def add(x, y):
    res = x + y
    return res
my_calc(1, 99) 


# 3、空函数的应用场景
# 需求:构思程序的体系结构,用来理清程序的思路架构。
def auth_user():
    """user authentication function"""
    pass

def download_file():
    """download file function"""
    pass

def upload_file():
    """upload file function"""
    pass

def ls():
    """list contents function"""
    pass

def cd():
    """change directory"""
    pass

五、调用函数:调用函数三种形式(语句形式、表达式形式、函数调用返回值作为参数)

# 1、语句形式:只调用函数,不做任何其他操作
interactive()
add(1, 3)

# 2、表达式形式
def add(x, y):
    res = x + y
    return res
# 2.1 赋值表达式形式
res = add(1, 2)
print(res)
# 2.2 数学表达式
res = add(1, 2)  * 10
print(res)

# 3、函数调用返回值当作参数
add(add(1, 2), 20)

六、函数的返回值:返回值的三种形式(返回None,返回值一个值,返回多个值)

# 什么时候用到返回值?
"""
若需要将函数体代码执行的结果返回给调用则,则需要用到return.return后无值或者直接省略默认返回None。return返回值没有无类线限制,且可以将多个返回值放到一个元组中。
"""

# 类比:函数的参数类似于工厂的原材料,返回值是产品
# return:函数体代码执行到return,函数体代码就会立刻终止。并且会将return后的值当作本次运行的结果返回。
# 1、返回None:函数体内没有return、return、return None
def func1():
    pass


def func2():
    return


def func3():
    return None


print(func1())  # None
print(func2())  # None
print(func3())  # None


# 2、返回一个值:return 值
def func4():
    return 10


res = func4()
print(res)  # 10


# 3、返回多个值:用逗号隔开多个值,会被return返回成元组
def func5():
    return 10, 20, [1, 2]


print(func5())  # (10, 20, [1, 2])
posted @ 2020-03-17 23:04  给你加马桶唱疏通  阅读(151)  评论(0编辑  收藏  举报