• Python基础知识之5——函数基础


      函数

      函数是一个独立且封闭完成特定功能的代码块,可以在任何地方被调用。Python内置了很多函数,我们可以直接调用,使用的时候,先查询下Python的官方文档即可:

    http://docs.python.org/3/library/functions.html#abs, 
      为什么要使用函数

      1、解决代码重复问题

       2、代码结构和思维结构一致

       3、利于分工合作

       4、代码清晰易懂,易修改

      如何定义和调用函数

      基本语法是:

    # 定义一个函数
    def apple(a):
        b = a + 1
        print(b)
        return a
    apple(11)

      注意的点:

      1、函数定义的函数体内必须有代码块,如果没有需要执行的代码,则用pass代替;

      2、定义函数后冒号后一定要缩进;

      3、return:表示函数的返回值,如果调用的地方需要一个函数的返回值的话,则需要使用return,如果没有的话,则不需要;它还表示函数的结束。

      4、函数的调用只需要调用函数名,然后输入对应的参数即可;

      5、函数调用前面不要有缩进。

      如何传递参数

      形参,类似变量的使用,不多说;

      实参:

      位置实参,参数的位置与定义的一致;

      关键字实参,将值赋值给关键字的操作,顺序颠倒没关系

      指定默认参,定义函数的时候确定好

      任意数量的实参

      有时候,我们不知道需要传递多少个实参。函数调用时候,无需考虑形参的个数。可以任意指定实参的数量。 PYTHON 通过使用*,让程序创建一个空元组,可以接受任意数量的参数值

    def welcome_python(*member_names,hope='希望生活幸福'):
        # 任意多个参数的函数
        for member_name in member_names:
            print(f'你好, {member_name}. 欢迎光临')
            print(f'	{hope}')
    welcome_python('Kim','Grace','Nelson Lam','None')

      返回值

      函数运行完成以后,如果需要返回一个值给调用该函数的地方,则使用 return 返回。函数返回值的类型可以是基本数据类型,也可以是字典、列表等

      传递数据结构

      传递列表

      列表也可以作为函数的参数。函数就可以直接访问列表中的元素

    def welcome_python(member_names,hope='希望你能坚持下去'):
        # 列表作为参数的函数
        for member_name in member_names:
            print(f'你好, {member_name}. 恭喜成为候选人')
            print(f'	{hope}')
    list_name =['Kim','Grace','Nelson Lam','None']
    welcome_python(list_name)

      传递字典

      函数中传递字典。在 Python 中,使用**作为形参接受实参传递的键值对。注意区别:在形参列表中,*表示传递空元组、 **表示传递字典

    def employee(first_name,last_name,**employee_infor):
        '''
        创建字典,存储所有的员工信息
        '''
        employee = {}
        employee['first_name'] = first_name
        employee['last_name'] = last_name
        
        # 使用for循环存储所有的其他键值对信息
        for key,value in employee_infor.items():
            employee[key] = value # 注意key不用有引号,否则值能显示组后一个实参
        
        return employee
    
    my_employee = employee('Yilin','Huang',location = '广州',dep = '数据分析')
    print('Print my employee imformation')
    for key,value in my_employee.items():
        print(key + ':' + value + '
    ')

       一个小实例项目:

      

    '''
    小项目实战:如何利用 python 删除一个指定的文件
    要求:
        必须使用函数
    
    提示与问题拆解
        a) 如何找到指定路径下的所有文件
        b) 如何找到指定的文件名在指定的路径下
        c) 如何删除找到的文件为新的名字
        d) 使用 os 模块下的 remove()方法
    '''
    # 定义一个删除指定路径下指定文件的函数
    def DeL_file(Dname,path):
        import os
        result = os.listdir(path)
        for f in result:
            if Dname in f and f.endswith('.txt'):# 判断文件是否在指定的路径下,有则删除之
                filepath = path + '\' + Dname + '.txt'# 文件的地址
                os.remove(filepath) # 删除文件
    
    path = r'E:PC_jobPC_jobmylearncode_ZZXQ	ran'
    DeL_file('project11',path)

     参数的设置:

    位置参数(定位参数):参数和参数值在位置和个数上严格一一对应

    def myadd(a,b,c,d):
        return a+b+c+d
    
    myadd(1,2,3,4)#调用的时候是一一对应的,严格对应,多一个参数少一个参数或者位置不对应全部报错

    不定长位置参数(不定长定位参数):带 * 号的位置参数,位置上一一对应,但个数上不一一对应,会被转化为元组

    # 不定长位置参数的使用
    # 计算多个数的和
    def myadd(*b):
        return sum(b)
    
    myadd(15,16)
    myadd(15,24,35)
    
    
    # 不定长位置参数和位置参数的混合使用
    def myadd(parm1,*parm2):
        return parm1 + sum(parm2)
    
    myadd(50,37,90)

    关键字参数:定义的时候已经赋值,如下面例题的400

    def myadd(a,b=400):
        return a+b
    
    myadd(1)# 直接使用默认值,结果是401
    myadd(1,b=7)# 修改关键字参数,结果是8

    不定长的关键字参数:不定长的关键字参数有两个*,如下,会被转化为字典

    # 不定长的关键字参数
    def myadd(**kwargs):
        print(kwargs)
    
    myadd(name='bj',tel=130)
    
    # 结果:
    {'name': 'bj', 'tel': 130}

    参数的综合应用:

    # 不定长位置参数和不定长关键字参数的综合应用
    def myfunc1(*args,**kwargs):
        print(args)
        for item in kwargs:
            print(item)
        
    myfunc1(5,15,22,38,500,name='lucy',age=30)
    # 结果:
    (5, 15, 22, 38, 500)
    name
    age
    
    # 解包
    l1 = [1,2,3,4,5,6]
    # *l1 <==> a,b,c,d,e,f=l1,即将l1列表拆分分别赋值
    
    def myfun1(*args,**kwargs):
        print(args)
        for item in kwargs:
            print(item)
            
    dl = {'name':'david','add':'bj','data':'2018-8-1'}
    l1 = [1,2,3,4,5,6,7]
    myfun1(*l1,**dl)
    # 结果
    (1, 2, 3, 4, 5, 6, 7)
    name
    add
    data

    偏函数:固定了一部分参数的函数

    # 偏函数,固定饿了部分参数的函数
    
    # 定义一个计算汇率的函数
    def mysal(nums,rate = 6.95):
        return nums*rate
    
    import functools as ft
    # 固定住汇率值,定义多个偏函数
    rmb2eur = ft.partial(mysal,rate=1.01)
    rmb2jpn = ft.partial(mysal,rate=82)
    jpn2rmb = ft.partial(mysal,rate=0.06)
    
    rmb2jpn(1000)
    jpn2rmb(1000)

    小练习:

    # 创建能根据输入计算BMI指数的函数
    '''
    身体质量指数(BMI)是根据人的体重和身高计算得出的一个数字,BMI是可靠的身体肥胖指标,计算公式是:BMI = Weight/High2,其中体重单位为公斤,身高单位为米
    计算公式:BMI = 体重(kg)/身高²(m)
    提示用户输入体重和身高数字(注意单位),然后计算BMI
    根据BMI指数范围,定义当前健康状态,BMI指数在18-25之间定义为健康的标准体重,小于该范围定义为偏瘦,超过该范围定义为偏重
    将BMI指数和起所代表的状态输出
    
    '''
    def BMI():
        weight = int(input('请输入您的体重数字(单位是kg):'))
        high = float(input('请输入您的身高数字(单位是m):'))
        BMI = weight/(high**2)
        if BMI < 18:
            print('您的BMI指数是',BMI)
            print('您的健康状态为:偏瘦')
        elif BMI > 25:
            print('您的BMI指数是',BMI)
            print('您的健康状态为:偏重')
        else:
            print('您的BMI指数是',BMI)
            print('您的健康状态为:健康的标准体重')        
    BMI()
  • 相关阅读:
    201521123099 《Java程序设计》第6周学习总结
    201521123099《java程序设计》第五周学习总结
    201521123099 《Java程序设计》第3周学习总结
    201521123099 《Java程序设计》第9周学习总结
    201521123099 《Java程序设计》第4周学习总结
    陈敏第一周Java课程总结
    maven常见配置
    使用swagger管理接口
    Reportng配置报告地址
    Testng基本问题
  • 原文地址:https://www.cnblogs.com/HYLering/p/10103492.html
Copyright © 2020-2023  润新知