zoukankan      html  css  js  c++  java
  • python之函数

    1.OOP 面向对象编程,万物皆对象,以class为主,抽象化

    2.POP 面向过程变成,万事皆过程,def定义过程

    3.函数式编程,将某种功能封装起来,用的时候直接调用函数名,def定义函数,也叫function/方法/过程/子程序

    函数定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需要调用其函数名即可 --Alex

    def hello():
        '这是一个简单的函数'
        print("hello world")
    hello()

    上面定义了一个函数hello(),并且调用了函数,最终效果是打印出一句hello world。我们可以从上面得到一些函数的基本定义方式。总结如下:

    • 函数以 def 关键词开头,后接函数名称和圆括号 (),()中传入参数。
    • 函数的第一行可以存放字符串说明函数的功能。

    我们再来看看有参数传递的函数,python中一切都是对象,所以传值的参数就可以分为两种,一种是不可变对象,例如字符串,元组,数字等;另一种是可变的对象,例如列表,字典等。

    传不可变对象类型类似于c++的值传递,只能将实参的值赋值给形参,而不能将形参的值传回给实参,形参的变化不会影响到实参的变化。

    def func1(a):
        a=3
        return a
    b=2
    func1(b)
    print('b=' + str(b) )
    结果:
    [python@master func]$ python3 1.py 
    b=2

    传可变对象,通过函数可以修改原对象的内容,类似于c++的引用传递,操作同一对象。

    def func2(a):
        a.append([1,2,3])
    
    b=[1,2,3]
    func2(b)
    print(b) 
    结果:
    [python@master func]$ python3 2.py 
    [1, 2, 3, [1, 2, 3]]

    有些函数参数会有默认值,即在调用函数时,不传入指定参数,则会使用定义时的默认值。在c++中,函数带默认值的参数写法遵循从右向左的顺序,以便在函数调用时能够正确传值,在Python中也遵循这个原则。另外,还可以用关键字传指定参数的值。如下例:

    def func3(name,age=20):
        print("名字",name,end=";")
        print("年龄",age)
    
    func3('ysg')
    func3(name='zs')
    print('''''''''''''''''''''''''''''''''''')
    def func3(name,age):
        print("名字",name,end=";")
        print("年龄",age)
    
    func3('zhang',20)
    func3(age=18,name='wang')
    结果:
    [python@master func]$ python3 3.py 
    名字 ysg;年龄 20
    名字 zs;年龄 20
    
    名字 zhang;年龄 20
    名字 wang;年龄 18

    此外,如果事先不清楚传入的参数个数,可以在参数前加*表示,在传入参数时,参数之间用逗号隔开。如下例,求解输入数据的加法:

    def func4(*number):
        sum=0
        for x in number:
            sum=sum+x
        print(sum)
    
    func4(1,2,3,4) 
    结果:
    [python@master func]$ python3 4.py 
    10

    lambda表达式 --创建匿名函数( 匿名函数的应用场景:应用于一次性的场景,临时使用

    lambda表达式是一个能够完成特定功能的表达式,与函数的作用一样,二者的区别主要是lambda表达式代码定义简单,可以在使用的时候定义,主要是完成一次特定的功能;而函数需要在使用前定义,可多次使用。lambda的基本语法如下:

    lambda arg1,arg2,...,argn:expression

    lambda表达式参数也可以指定默认值,也遵循函数定义时的规则,在调用时候也与函数一样。下面用了一个简单的实例:

    sum1 = lambda a,b:a+b;
    print(sum1(1,2))
    sum2 = lambda a,b=5:a+b;
    print(sum2(1))
    结果:
    [python@master func]$ python3 5.py 
    3
    6

    可以看到,lambda表达式返回的值就是表达式的值,在函数中,我们可以用return来返回函数的计算结果;return不带参数的话,作用就是退出程序并且返回None。如下例:

    def func5(a,b):
        if((type(a)!=int) | (type(b)!=int)):
            return;
        else:
            return (a+b);
    print(func5('a',2))
    print(func5(1,2))
    结果:
    [python@master func]$ python3 6.py 
    None
    3

    匿名函数结合使用内置函数的用法

    max,min,sorted,map,reduce,filter的用法

    字典的运算:最小值,最大值,排序

    salaries={
    'egon':3000,
    'alex':100000000,
    'wupeiqi':10000,
    'yuanhao':2000
    }
    
    print(max(salaries))
    print(max(salaries.values()))
    print(max(salaries,key=lambda name:salaries[name]))
    print(min(salaries,key=lambda name:salaries[name]))
    print(max(zip(salaries.values(),salaries.keys()))[1])
    结果:
    [python@master func]$ python3 7.py 
    yuanhao
    100000000
    alex
    yuanhao
    alex

    map

    >>> names=['alex','wupeiqi','yuanhao','yanglei','egon']
    >>> res=map(lambda x:x if x == 'egon' else x+'二狗子',names)
    >>> print(res)
    <map object at 0x7f417ff3b908>
    >>> print(list(res))
    ['alex二狗子', 'wupeiqi二狗子', 'yuanhao二狗子', 'yanglei二狗子', 'egon']
    >>> 
  • 相关阅读:
    线性代数思维导图——3.向量
    微分中值定理的基础题型总结
    构造函数
    Python课程笔记(七)
    0241. Different Ways to Add Parentheses (M)
    0014. Longest Common Prefix (E)
    0013. Roman to Integer (E)
    0011. Container With Most Water (M)
    0010. Regular Expression Matching (H)
    0012. Integer to Roman (M)
  • 原文地址:https://www.cnblogs.com/hello-wei/p/9549645.html
Copyright © 2011-2022 走看看