zoukankan      html  css  js  c++  java
  • 08.1 Day Python之函数初识(整理后版本)

    函数初识

    1、函数的定义

    def func():
        '''
        测试函数
        :return:
        '''
        s = '人生苦短我用python'
        count = 0
        for i in s:
            count += 1
        return count

    2、函数的调用

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

    3、函数的返回值

    1、返回值的种类

    ① 没有返回值,返回None

    • 只有return:结束一个函数的继续
    • 没有return
    • 有return None:不常用
    # 只有return:结束一个函数的继续
    def func():
        '''
        测试函数
        :return:
        '''
        s = '人生苦短我用python'
        count = 0
        for i in s:
            count += 1
        return  #这里没有count 相当于不给返回值
    
    
    res = func()  # 函数名加括号进行调用:func()
    print(res)
    >> > None
    
    
    # 没有return 和只有一个return效果一样
    def func():
        '''
        测试函数
        :return:
        '''
        s = '人生苦短我用python'
        count = 0
        for i in s:
            count += 1
    
    
    res = func()  # 函数名加括号进行调用:func()
    print(res)
    >> > None
    
    
    # 有return None:不常用 返回值一样是None
    def func():
        '''
        测试函数
        :return:
        '''
        s = '人生苦短我用python'
        count = 0
        for i in s:
            count += 1
        return None
    
    
    res = func()  # 函数名加括号进行调用:func()
    print(res)
    >> > None

    ② 有一个返回值

    • 可以返回任何数据类型
    • 只要返回就可以接收到
    • 如果在一个函数中有多个return,只返回第一个
    # 有一个返回值
    def func():
        '''
        测试函数
        :return:
        '''
        s = '人生苦短我用python'
        count = 0
        for i in s:
            count += 1
        return count
        return '这是第二个返回值,不会返回'
    
    
    res = func()  # 函数名加括号进行调用:func()
    print(res)
    >> > 12

    ③ 有多个返回值

    • 用多个变量接收:有多少返回值就要有多少变量接收
    • 用一个变量接收:接收到的是一个元组
    # 有多个返回值
    def func():
        '''
        测试函数
        :return:
        '''
        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、参数的概念

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

    ②有一个参数:传什么就是什么

    ③有多个参数:位置参数

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

    2、参数的种类

    ①形参的角度:

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

    ②实参的角度:

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

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

    1、站在形参的角度上,给变量加上*,就是组合所有传来的值。

    def func(*args):
        print(args)

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

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

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

    def defult_param(a,l = []):
        l.append(a)
        print(l)
    
    defult_param('python')
    defult_param('java')
    
    >>> ['python']
    >>> ['python', 'java']

  • 相关阅读:
    一个泛型的单例模式
    一个将Object转化为CSV文件的类
    WSDL.EXE Error: Not enough storage is avaliable to process the command.
    一个Linq Group By 和Sum的范例
    Random Cube Algorithm
    AccessImport demo
    .net controls of FileUpload
    asp.net AJAX
    Deploy iis7.5
    C# Fibonacci Sequence
  • 原文地址:https://www.cnblogs.com/lidaxu/p/8127661.html
Copyright © 2011-2022 走看看