【Python函数与模块学习记录1】函数的定义与实现
1、函数的介绍与定义
1.1 函数是什么
函数(Function)是实现具有特定功能的代码
python中预制了很多内置函数
开发者也可以创建自定义函数
1.2 函数的特点
隐藏实现功能的细节
重用代码
提高可读性,便于调试
1.3 函数的定义
def 函数名(形式参数(形参)1,形式参数2,......形式参数n):
要运行的代码(函数体)
return 输出的数据(返回值)
形式参数其实就是输入的数据,输入的数据在函数体中经过加工,得到最后的结果,就是输出的数据。
函数用于代码的重用。
2、函数的的使用技巧
2.1 什么是形参和实参
参数是函数的输入数据,在程序允许时根据参数不同执行不同代码
形参:用于约束,格式:def 函数名(形参)
实参:用于传值,格式:函数名(实参)
实参根据形参对实参进行传值
3、函数的返回值
参数是函数的输入数据,而返回值则是函数的输出结果;
return不是必须的,但是return语句执行后,函数中断执行;
若传入的实参在函数体中没有对应的执行语句时,即 return 返回值为空,最终返回:None。
4、函数的三种使用技巧
4.1 形参中默认值设定
为参数设置默认值,只需要在形参后面增加 "=具体值"即可,如果不传入实参就用默认的具体值,否则用传入的具体值
def 函数名(形参1, 形参2 = "具体值", ... ):
4.2 以形参形式传参(关键字传参)
实际工作中推荐采用这种形式,不受顺序的影响;如果参数较多,封装成字典。
def 函数名(形参1 = "具体值1",形参2 = "具体值2",形参3 = "具体值3",...):
4.3 混合式传参
关键字传参的扩展形式,"*"代表之后所有参数传参时必须使用关键字传参
def 函数名(形参1,*,形参2,形参3,......):
5、函数的其他三种使用技巧
5.1 序列(列表、元组、字符串、range)传参
函数名(* 序列名)
把序列当作参数传入,序列名前必须加*,是按照形参的对应位置传入的。
5.2 字典传参
函数名(**字典名)
调用函数时,把字典当作参数传入,列表名前必须加**。
5.3 返回值包含多个数据
return可以返回字典、列表等
6、综合编程
# -*-coding:utf-8-*- import random phone_numbers_str = "匪警[110],火警[119],急救中心[120],道路交通事故报警[122],水上求救专用电话[12395],天气预报[12121],报时服务[12117],森林火警[12119],电力服务[95598],红十字会急救台[999],公安短信报警[12110],通用紧急求救[112],信产部IP/网站备案[010-66411166]" weather_str = "北京,2019年1月12日,多云,8°C,-4°C,南风3级~上海,2019年1月12日,小雨,9°C,6°C,北风2级~广州,2019年1月12日,阵雨转多云,22°C,15°C,持续无风向微风" #双色球 def generate_umionlotto(number): for i in range(0, int(number)): for j in range(0, 6): red = random.randint(1, 33) print(red, end=" ") blue = random.randint(1, 16) print(blue) #号码百事通 def find_phone(keyword): phone_list = phone_numbers_str.split(",") # print(phone_list) for p in phone_list: if p.find(keyword) != -1: print(p) #天气查询 def get_weather(city): city_list = weather_str.split("~") weather_data = {} for i in range(0, len(city_list)): w = city_list[i].split(",") weather = {'name': w[0], 'date': w[1], 'weather': w[2], 'max': w[3], "min": w[4], 'wind': w[5]} weather_data[weather["name"]] = weather if city in weather_data: return weather_data.get(city) else: return {} while(True): print("1-双色球随机选号") print("2-号码百事通") print("3-明日天气预报") print("0-结束程序") c = input("请输入功能编号:") if c == "1": n = int(input("你要生成几注双色球号码:")) generate_umionlotto(n) elif c == '2': n = input("你输入您要查询的机构或者电话号码:") find_phone(keyword = n) elif c == '3': n = input("请输入您要查询的城市:") w = get_weather(n) if 'name' in w: print("{date} {name} {weather} {max}/{min} {wind}".format_map(w)) print("*"*40) else: print("未找到{0}的天气数据".format(n)) print("*" * 40) elif c == '0': break else: print("您输入的功能编号有误,请重新输入") print("感谢您的使用,祝你生活愉快!")