zoukankan      html  css  js  c++  java
  • 第三章 Python函数

    函数

      如果在开发程序时,需要某块代码多次,但是为了提⾼编写的效率以及代码的重⽤,所以把具有独⽴功能的代码块组织为⼀个⼩模块,这就是函数

    函数的定义

      函数定义的三种方式:无参函数,有参函数,空函数

    #无参函数
    def demo_print():
        print('hello')
    
    #有参函数
    def add(x,y):
        print(x+y)
    
    #空函数
    def foo(x,y):
        pass

    函数调用

      调⽤函数很简单的,通过函数名() 即可完成调⽤:demo_print()

      函数使用的原则是:先定义,再调用

    函数的注释

    def demo_ano():
        '''
      注释
        '''
        print('-------')

      使用help(demo_ano)可以看到函数的相关说明

    函数参数

      形参与实参:形参即变量名,实参即变量值,函数调用时将实参赋值给形参 

    def add(a,b):
         s=a+b
        return s
    
    add(1,2)
    #(a,b)为形参,(1,2)为实参

      位置参数:按照从左到右的顺序定义的参数

    def add(num1,num2):
        s=num1+num2
        return s
    
    add(5,6)
    
    (num1,num2)为位置形参,(5,6)为位置实参

      关键字参数:按照key=value的形式定义的参数

    def login(name,pwd):
        if name=='luoli' and pwd=='123456':
            print('Login Sucess')
        else:
            print('Login failed')
    
    login(pwd='123456',name='luoli')

      默认参数:形参在定义时就已经为其赋值

    def add(a,b=3):
        s=a+b
        print(s)
    
    add(3)
    add(5,10)
    
    默认参数只在定义时赋值一次,可以传值,也可以不传值,默认参数的定义应该在位置参数的右边,默认参数通常定义成不可变类型

      可变长参数:可变长指的是实参值得个数不固定,实参位置实参和关键字实参两种,针对这两种形式的可变长参数,形参有对应的两种方式来存放它们,即*args和**kwargs

      *args

    def foo(x,y,*args):
        print(x,y)
        print(args)
    
    foo(1,2,3,4,5)
    
    def foo(x,y,z):
        print(x,y,z)
    
    foo(*[1,2,3])

      **kwargs:必须按照key=value的方式赋值

    def foo(x,y,**kwargs):
        print(x,y)
        print(kwargs)
    
    foo(1,2,z=3,p=4,q=5)
    
    def foo(x,y,**kwargs):
        print(x,y)
        print(kwargs)
    
    foo(**{'z':1,'x':2,'y':4})

      *args,**kwargs:对于任意函数,都可以通过类似func(*args, **kw)的形式调用它,无论它的参数是如何定义的

      命名关键字参数:*后定义的参数,必须被传值(有默认值的除外),且必须按照关键字实参的形式传递

    def foo(x,y,*args,a=1,b,**kwargs):
        print(x,y)
        print(args)
        print(a)
        print(b)
        print(kwargs)
    
    foo(1,2,3,4,5,b=3,c=4,d=5)

    函数返回值

      所谓“返回值”,就是函数中程序完成后,最后给调⽤者返回的结果,如果想要使用这个结果,那么就需要保存该返回值

    def add(a,b):
        return a+b
    
    res=add(1,2)
    print(res)

    函数类型

      无参数,无返回值

    def demo_print():
        print('test')
    
    demo_print()

      无参数,有返回值

    import time
    def get_time():
        current_time=time.time()
        return current_time
    
    res=get_time()
    print(res)

      有参数,无返回值

      此类函数,能接收参数,但不可以返回数据,⼀般情况下,对某些变量设置数据⽽不需结果时,⽤此类函数

      有参数,有返回值

    def add(a,b):
        return a+b
    
    res=add(100,200)
    print(res)

    练习

      (1)写函数,,用户传入修改的文件名,与要修改的内容,执行函数,完成批量修改操作

    def modify_file(source_file,old,new):
        import os
        with open(source_file,'r',encoding='utf-8') as read_f,
            open('.bak.swap','w',encoding='utf-8') as write_f:
            for line in read_f:
                if old in line:
                    line=line.replace(old,new)
                write_f.write(line)
        os.remove(source_file)
        os.rename('.bak.swap',source_file)
    View Code

      (2)写函数,计算传入字符串中【数字】、【字母】、【空格] 以及 【其他】的个数

    def count(charac):
        d={
            'num':0,
            'str':0,
           'space':0,
            'others':0,
        }
        for i in charac:
            if i.isdigit():
                d['num']+=1
            elif i.isalpha():
                d['str']+=1
            elif i.isspace():
                d['space']+= 1
            else:
                d['others']+=1
        return d
    #res=count('hello123 hh ****')
    #print(res)
    View Code

      (3)写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5

    def my_len(model):
        i=len(model)
        if i > 5:
            print('%s长度大于5'%model)
        else:
            print('%s长度小于5'%model)
    
    # my_len([1,2,3,4,5,6])
    # my_len('sdf')
    View Code

      (4)写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者

    def li_len(li):
        if len(li)>2:
            li=li[0:2]
        return li
    
    res=li_len([1,2,3,4])
    print(res)
    View Code

      (5)写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者

    def mod_odd(mod):
        mod=mod[::2]
        return mod
    
    res=mod_odd([1,2,3,4,5])
    print(res)
    View Code

      (6)写函数,检查字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者

    def di_len(di):
        for k,v in di.items():
            if len(v) > 2:
                di[k]=v[0:2]
        return di
    
    dic = {"k1": "v1v1", "k2": [11,22,33,44]}
    res=di_len(dic)
    print(res)
    View Code

     

  • 相关阅读:
    hdoj2187:悼念512汶川大地震遇难同胞 (贪心)
    2.0其它之Transform详解,以及UIElement和FrameworkElement的常用属性
    2.0外观之样式, 模板, 视觉状态和视觉状态管理器
    2.0图形之Ellipse, Line, Path, Polygon, Polyline, Rectangle
    2.0控件之ListBox, MediaElement, MultiScaleImage, PasswordBox, ProgressBar, RadioButton
    2.0画笔之SolidColorBrush, ImageBrush, VideoBrush, LinearGradientBrush, RadialGradientBrush
    2.0图形之基类System.Windows.Shapes.Shape
    2.0交互之鼠标事件和键盘事件
    2.0控件之ScrollViewer, Slider, StackPanel, TabControl, TextBlock, TextBox, ToggleButton
    2.0交互之InkPresenter(涂鸦板)
  • 原文地址:https://www.cnblogs.com/iamluoli/p/8082873.html
Copyright © 2011-2022 走看看