zoukankan      html  css  js  c++  java
  • python函数函数初识

    python函数-函数初识

    1.函数的定义

    语法
    def 函数名(参数1,参数2,参数3,...):
        '''注释'''
        函数体
        return 返回的值
    

    2.函数的使用原则---先定义后调用

    #定义阶段
    def foo():
        print('from foo')
        bar()
    def bar():
        print('from bar')
    #调用阶段
    foo()
    

    3.函数的返回值  

     3.1返回值的种类

      (1)没有返回值,返回None

        ·只有return:结束一个函数的继续

        ·没有return

        ·有return None:不常用

     

    #只有一个return
    def func():
        s = '人生苦短我用python'
        count = 0
        for i in s:
            count += 1
        return
    res = func()  # 函数名加括号进行调用:func()
    print(res)
    

      

    # 没有return
    def func():
        s = '人生苦短我用python'
        count = 0
        for i in s:
            count += 1
    res = func()  # 函数名加括号进行调用:func()
    print(res)
    

      

    # 有return None:不常用
    
    def func():
        s = '人生苦短我用python'
        count = 0
        for i in s:
            count += 1
        return None
    res = func()  # 函数名加括号进行调用:func()
    print(res)
    

      

      (2)有一个返回值

              ·可以返回任何数据类型

        ·只要返回就可以接收到

        ·如果在一个函数中有多个return,只返回第一个

    def func():
        s =  '人生苦短我用python'
        count = 0
        for i in s:
            count += 1
        return count
        return  #'这是第二个return  不返回'
    
    res = func()
    print(res)

    >>>12

    (3)返回多个值

    • 用多个变量接收:有多少返回值就要有多少变量接收
    • 用一个变量接收:接收到的是一个元组
    def func():
        s = '人生苦短我用python'
        count = 0
        for i in s:
            count += 1
        return s, count
    res = func()  # 函数名加括号进行调用:func()
    print(res)
    >> > ('人生苦短我用python', 12)
    
    res1, res2 = func()
    print(res1, res2)
    >>> 人生苦短我用python 12
    

    4.函数的参数  

    1、参数的概念  

    1.没有参数:定义函数和调用函数时括号里都不写内容

    2.有一个参数:传什么就是什么

    3.有多个参数:位置参数

    ==顺序:位置参数,*args,默认参数,**kwargs==

    2.参数的种类

    1.形参的角度:

    • 位置参数:必须传,且有几个就必须传几个
    • * args:接收的是按照位置传参的值,组织成一个元组
    • 默认参数:可传可不传,不传就按默认值
    • ** kwargs:接收的是按照关键字传参的值,组织成一个字典
    # 位置参数
    def name_sex(name, sex):
        print('姓名是:' + name + '\n性别是:' + sex)
    name_sex('乔','男')
    >>>姓名是:乔
    >>>性别是:男
    
    # 默认参数
    def name_sex(name, sex='男'):
        print('姓名是:' + name + '\n性别是:' + sex)
    name_sex('乔')
    >>>姓名是:乔
    >>>性别是:男
    
    # *args---元组
    def name_sex(*args):
        print(args)
    name_sex('乔','男')
    >>>('乔', '男')
    
    # **kwargs---字典
    def name_sex(**kwargs):
        print(kwargs)
    name_sex(姓名='乔',性别='男')
    >>> {'姓名': '乔', '性别': '男'}
    

    2.实参的角度

      

    • 按位置传参:
    • 按关键字传参:
    • 按位置、按关键字混合传参:必须按照位置参数,再按照关键字传参,不能将参数赋予多个值
    # 按位置传参
    def name_sex(name, sex):
        print('姓名是:' + name + '\n性别是:' + sex)
    name_sex('乔', '男')
    >>>姓名是:乔
    >>>性别是:男
    
    # *按关键字传参
    def name_sex(name, sex):
        print('姓名是:' + name + '\n性别是:' + sex)
    name_sex(sex='男',name='乔')
    >>>姓名是:乔
    >>>性别是:男
    
    # *按位置、按关键字混合传参 必须按照位置参数,再按照关键字传参,不能将参数赋予多个值
    def name_sex(name, sex):
        print('姓名是:' + name + '\n性别是:' + sex)
    name_sex('乔',sex='男')
    >>>姓名是:乔
    >>>性别是:男
    

    5、动态参数的另一个传参方式

    1、站在形参的角度上,给变量加上*,就是组合所有传来的  
    def func(*args):
        print(args)
    

     2、站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散

    unc(1,2,3,4,5)
    l = [1,2,3,4,5]
    func(*l)
    

    6、默认参数的陷阱:默认参数是一个可变数据类型

    一、
    def qqxing(l = []): l.append(1) print(l) qqxing() qqxing([]) qqxing() qqxing() 二、
    def qqxing(k,l = {}): l[k] = 'v' print(l) qqxing(1) qqxing(2) qqxing(3)

      

      

     

  • 相关阅读:
    XSLT的Replace函数
    Predicate<T> 委托
    《人生的智慧》第二章 人的自身
    Kmeans文本聚类:获取weka计算的聚类中心,完成文本聚类
    VCKbase转载:C++调用ADO
    Kmeans文本聚类系列之如何调用Preprocess类
    Kmeans文本聚类系列之全部代码
    近期计划
    Kmeans 聚类之建立文档向量模型(VSM)
    LibSVM文本分类之结果统计
  • 原文地址:https://www.cnblogs.com/a438842265/p/8464733.html
Copyright © 2011-2022 走看看