【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("感谢您的使用,祝你生活愉快!")

 

posted @ 2021-04-25 20:43  钟胜一  阅读(96)  评论(0编辑  收藏  举报