zoukankan      html  css  js  c++  java
  • 8--Python入门--函数

    函数基本框架如下(【】中的内容表示是或选的,可以不写):
    def 函数名(参数):
       【'''函数说明文档'''】
        函数主体
       【return 返回对象】

    函数小例子

    #我们先定义一个函数
    def find_max(series):
        
        '''查找一个序列中最大值'''
        
        the_max = series[0]
        for j in series:
            if j >= the_max:
                the_max = j
                
        return the_max
    
    #调用函数
    series = [1,20,23,1111,222,-10]
    print('序列最大值:',find_max(series))  
    View Code

    输出:序列最大值: 1111

    默认参数的使用

    def pos_neg(x=1):
        if x > 0:
            print(x,'是正数')
        else:
            print(x,'不是正数')
    
    
    pos_neg()   #这里没有传入参数x,仍然可以运行,因为在未传入参数的情况下,默认x参数为1
    View Code

    输出:1 是正数

     
    pos_neg(-10)  #当然自己也是可以传入参数
    View Code

    输出:-10 不是正数

     事实上,在调用很多python函数时,我们都使用了默认的参数设置
     
     

    可变参数

    def summation(*series):    #注意这里参数前面的有一个* 表示的series这个参数是可变参数
        '''求一个序列元素的加和'''
        sum = 0
        for i in series:
            sum += i
        return sum
    
    print(summation(1,2,3,4,5,6,7)) #可变参数的设置 使得我们可以传入任意个参数  函数调用时会自动组装为一个tuple
    View Code

    输出:28

    如果不设置为可变参数的话,需要传入一个序列形式的参数

     
    def summation(series):    
        '''求一个序列元素的加和'''
        sum = 0 
        for i in series:
            sum += i
        return sum
    
    print(summation([1,2,3,4,5,6,7]) )
    View Code

    输出:28

     

    关键词参数

     
    def info_insert(name, age, university, **other):
        print('姓名:',name,'年龄:',age,'学校:',university,'其他信息:',other)
    View Code

    注意参数**other,这个参数允许我们传入任意个含参数名的参数,这些关键词参数在函数调用时会自动组装为一个dict
    例如我们在做信息录入时,姓名,年龄,学校是必填信息,而其他信息是选填的,这时候就可以使用关键词参数

    info_insert('娜塔莎 罗曼诺夫',99,'圣地亚哥大学')
    View Code
    输出:
    姓名: 娜塔莎 罗曼诺夫 年龄: 99 学校: 圣地亚哥大学 其他信息: {}

    info_insert('娜塔莎 罗曼诺夫',99,'圣地亚哥大学',性别='',工作='特工')
    View Code

    输出:

    姓名: 娜塔莎 罗曼诺夫 年龄: 99 学校: 圣地亚哥大学 其他信息: {'性别': '女', '工作': '特工'}

    混合参数

    在python函数定义中,可以用必选参数,默认参数,可变参数,关键词参数。注意这些参数的定义顺序为:必选参数,默认参数,可变参数和关键词参数

     
    def info_insert(name, age, married='未婚',*schools, **kw):
        print('姓名:',name,'年龄:',age,'婚姻状况:',married,'就读学校:',schools,'其他信息:',kw)
    
    info_insert('娜塔莎 罗曼诺夫',99)
    View Code

    输出:

    姓名: 娜塔莎 罗曼诺夫 年龄: 99 婚姻状况: 未婚 就读学校: () 其他信息: {}
    
     
    info_insert('娜塔莎 罗曼诺夫',99,'已婚','浙江大学','上海财经大学')
    View Code

    输出:

    姓名: 娜塔莎 罗曼诺夫 年龄: 99 婚姻状况: 已婚 就读学校: ('浙江大学', '上海财经大学') 其他信息: {}
    
     
    info_insert('娜塔莎 罗曼诺夫',99,'已婚','浙江大学','上海财经大学',性别='',工作='特工')
    View Code

    输出:

    姓名: 娜塔莎 罗曼诺夫 年龄: 99 婚姻状况: 已婚 就读学校: ('浙江大学', '上海财经大学') 其他信息: {'性别': '女', '工作': '特工'}
    
     

    递归函数

    递归函数的含义是在函数定义过程中,会调用函数本身

     
    def factorial(n):
        '''计算n的阶乘'''
        if n == 1:
            return 1
        else:
            return n*factorial(n-1)
    
    factorial(5)
    View Code

    输出:120

    匿名函数——lambda函数

    lambda函数的基本格式为: lambda 参数: 表达式
    匿名函数定义更为简便(控制在一行),有些简单的函数可以用它来写,或者作为复杂函数的组成部分

    s = lambda x:print(x,'大于 1') if x>1 else print(x,'小于 1')
    View Code
    s(10)
    s(-10)
    View Code

    输出:

    10 大于 1
    -10 小于 1
     
  • 相关阅读:
    ZooKeeper的工作原理
    redis 数据类型详解 以及 redis适用场景场合
    nginx负载均衡原理
    Java中缓存的介绍
    Java中接口的作用
    json与xml的区别
    最经典40个多线程问题总结
    Java线程 : 线程同步与锁
    dbcp与c3p0的区别
    Linux常见命令
  • 原文地址:https://www.cnblogs.com/lizhiyan/p/9712220.html
Copyright © 2011-2022 走看看