# 第6讲 python 中的函数
# 一、什么函数
# 1、函数的定义
# 定义:函数是组织好的,可重复使用的,用来实现单一,或相关联功能 的代码段。
# 2、函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提 供了许多内建函数,比如print()。
# 但你也可以自己创建函数,这被叫做 用户自定义函数。
# 内建函数 print()
# 自建函数 def
# 3、自建函数
# 可以使用def关键字来创建Python自定义函数,其基本语法结构如下:
# def 函数名(参数列表)
# 函数体
#
# 函数名() #调用函数
# def test(): # 冒号 test 就是自建函数
# #这里是函数体,需要空一格tab键
# print('duoceshi') #函数体
#第一种调用方法 在本模块调用
# test() #调用函数,如果函数定义了,没有调用不会输出结果,
# 但是调用的函数可以再其他模块#调用
#第二种调用方法在其他模块调用函数
# import dcs7.lesson6 #通过报名.模块名导入这个模块,直接运行就可以调用
# (在函数模块有调用才能打印结果)
# from dcs7 import lesson6
# lesson6.test() #这样也是调用函数,通过模块名.函数名
#第三种调用方法
# if __name__ == '__main__': 是函数的入口,也称为主函数
# __name__ 是当前模块名,
# 当模块被直接运行时模块名为 __main__ ,
# 这句话的 意思就是,当模块被直接运行时,
# 以下代码块将被运行,当模块是被导入时, 代码块不被运行。
# if __name__ == '__main__':
# test() #调用函数,main函数的代码是不会被其他模块导入
# 4、函数中带单个参数
# def test(name): #name 表示形式参数
# '''
# 单个参数
# :param name:
# :return:
# '''
# print(name+'约会')
#
# test('孙悟空') #孙悟空 是实际参数
#注意:如果定义的函数带了参数,调用时也需要传实际参数,给了也不行
# 5、多个参数
# def test(name,where): #name where表示形式参数
# '''
# 单个参数
# :param name:
# :return:
# '''
# print(name+'去'+where+'约会')
#
# test('孙悟空','花果山')
# 6、默认值参数(默认值的位置只能放在后面)
# def test(name,where,action='约会'): #传了三个形式参数
# print(name+'去'+where+action)
# #当出现形式参数和默认值参数时,默认值参数放在形式参数后面
#
# test('孙悟空','花果山') #这个地方没有给默认值传新值,就是用默认值
# test('孙悟空','花果山','摘桃') #当给默认值传了新值,就使用新值,不会使用默认值
# 7、可变长元组,==>可变长参数用一个*号表示可变长元组
# def test(*value):
# print(value)
# print(type(value))
#
# test('小马','小康','小单') #这里可以写多个参数
#打印结果 ('小马', '小康', '小单') 数据类型tuple
# 8、可变长字典==》可变长参数:两个*号表示可变长字典
# def test(**value):
# print(value)
# dict1 = {'name':'xiaoduan','age':18}
# dict2 = {'class':1833}
# test(**dict1,**dict2) #{'name': 'xiaoduan', 'age': 18, 'class': 1833}
# 9、可变长元组和可变长字典同时出现时,可变长元组放在可变长字典的前面
# def test(*value,**value1):
# print(value)
# print(value1)
#
# dict1 = {'name':'xiaoduan','age':18}
# test('小马', '小康', '小单',**dict1) #('小马', '小康', '小单') {'name': 'xiaoduan', 'age': 18}
# 10、python 中的作用域
# 实例1
# num = 100 #函数体外变量称为全局变量
# def test():
# num = 200 #在函数体内称为局部变量,只能在函数体内用
# print(num)
#
# test() #200
# print(num) #100
# 实例2
# num = 100 #函数体外变量称为全局变量
# def test():
# num = 200 #在函数体内称为局部变量,只能在函数体内用
# sum = num +100
# print(sum)
#
# test() #300
# print(num) #100
# 实例3
# num = 100 # 函数体外变量称为全局变量
# def test():
# sum = num + 100 #如果函数体内部没有局部变量,则使用全部变量
# print(sum)
#
# test() #200
# print(num) #100
# 实例4
# num = 100 # 函数体外变量称为全局变量
# def test():
# global num #把函数内部的局部变量变为全局变量,之前的函数体外全局变量失效了
# num = 200 # 在函数体内称为局部变量,只能在函数体内用
# sum = num + 100
# print(sum)
#
# test() #300
# print(num) #200
# 11、python 中的返回值
'''
1、在程序开发中,有时候会希望一个函数执行程序结束后,告诉 调用者一个结果,以便调用者针对具体的结果做后续的处理。
2、返回值是函数完成工作后,最后给到调用者的一个结果。
3、在函数中使用return关键字可以返回结果。
4、调用函数的一方可以使用变量来接收函数的返回结果。
'''
# 例子1
# def test():
# num = 600
# score = num/6
#
# test() #运行为空
# print(test()) #None
# 例子2
# def test():
# num = 600
# score = num/6
# return score #把score 这个结果给到函数调用出,谁拿到了这个函数,谁调用这个函数就拿到这个结果
# test() #运行为空
# print(test()) #100.0
# 例子3
# def test():
# num = 600
# score = num/6
# print(score)
# return score #把score 这个结果给到函数调用出,谁拿到了这个函数,谁调用这个函数就拿到这个结果
# # test() #100.0
# print(test()) #100.0 100.0
# 需求:编写一个求平均值函数,然后根据各科成绩判断是否为优秀学生
# def avg():
# sum = 600
# score = sum/6
# return score
#
# def is_good_stu():
# a = avg() #【函数的传递】
# if a > 90:
# print('优秀学生')
# else:
# print('不是优秀学生')
# is_good_stu()
# 需求:登录银行系统并显示余额,有两个功能第一个是登录,第二个是登录 后显示余额,
# 先登录然后根据登录是否成功然后是否显示余额。 分析思路:如果想查询到余额,前提必须登录,
# 所以现在我们用两个函数来 处理,第一个函数实现登录,第二个函数实现余额查询,
# 调用第一个函数得 到的结果给第二个函数,然后第二个函数根据结果进行代码处理。
# def login():
# dict1 = {'name':'admin','pwd':'123456'}
# name = input('请输入您的账号:')
# if name ==dict1.get('name'):
# pwd = input('请输入您的密码:')
# if pwd ==dict1.get('pwd'):
# return '登录成功'
# else:
# return '您输入的密码有误、请重新输入密码输入正确则登录成功'
# else:
# return '用户错误、请重新输入'
#
# def select_amount():
# l = login() #函数的传递
# if l =='登录成功':
# print('您的余额:$1000000')
# else:
# print('请登录')
# if __name__ == '__main__':
# select_amount()
# 12、python 中的内置函数
# format()函数是一种格式化字符串的函数 ,该函数增强了字符串格式化的功能。
# 基本语法:是通过 {} 来代替以前的 %
# 1)按顺序进行格式化
# str1 = '{} {}'.format('dcs','888','test')
# print(str1) #dcs 888
# 2)通过索引进行格式化
# str1 = '{1} {0}'.format('dcs','888','test')
# #{]中的数字是索引,format中的值就是索引值
# print(str1) #888 dcs
# 3)通过参数进行格式化输出
# str1 = '姓名:{name} 年龄:{age}'.format(name = '小段',age = '18')
# print(str1) #姓名:小段 年龄:18
# 4)对列表进行格式化
# list1 = ['xiaoduan','18']
# str1 = '姓名:{0[0]} 年龄:{0[1]}'.format(list1)
# #{0[0]} 第一个0表示format中的list1,第二个0是list1中的第一个值,{0[1]} 这个0是取到的是list1
# # 这个1是list1中的第二个值
# print(str1) #姓名:xiaoduan 年龄:18
# list1 = ['xiaoduan','18']
# list2 = [16,20]
# str1 = '姓名:{0[0]} 年龄:{1[0]}'.format(list1,list2)
# print(str1) #姓名:xiaoduan 年龄:16
# 5)对字典进行格式化
# dict1 = {'name':'xiaoduan','age':18}
# str1 = '姓名:{name} 年龄:{age}'.format(**dict1) #如果是字典format需要加两个*号
# print(str1) #姓名:xiaoduan 年龄:18
|
|