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

    python3 函数

    函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

    函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

    定义一个函数

    • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()
    • 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
    • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
    • 函数内容以冒号起始,并且缩进。
    • return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None
    def func(len):
        '''
        计算字符串长度
        :return:len
        '''
    
        i = 0
        for k in len:
            i += 1
        return i
    
    st = 'abcdefg'
    lens = func(st)
    print(lens)
    ### 此为定义一个简单的函数的定义,包括注释

     函数调用

    定义一个函数以后可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执行。

    如下实例调用了 printme() 函数:

    def printme(str):
        print(str)
        return
    
    printme('打印任意输入值')
    printme('这个函数很无聊')
    打印任意输入值
    这个函数很无聊

    参数传递

    位置参数

    如下事例,按照参数位置传递参数。有多少个位置则传递多少个参数。

    若想自定义参数,则需要在传参过程中自定义关键字

    def func(name,sex):
        print(name+'性别是'+sex)
        return
    
    func('小明','')
    小明性别是男

    def func(name,sex='男'):
    print(name+'性别是'+sex)
    return

    func(sex='女',name='小花')
    小花性别是女

    默认参数(??)

    # 如果调用函数时没有传递参数,则会使用默认参数
    def
    func(name,age,sex=''): print(name,age,sex) return func('abc','12')
    ##############################################
    这里我用字符串格式化写了一个小函数,为啥默认函数不能用,先留着后面看看。讲道理即使不写性别应该是男?
    def func(name,age,sex='男'):
    print('这个人的名字是:{},年龄是:{},性别是:{}'.format( name,age,sex))
    return

    na = input('请输入名字:')
    ag = input('请输入年龄:')
    se = input('请输入性别:')
    func(na,ag,se)

    请输入名字:小明
    请输入年龄:12
    请输入性别:
    这个人的名字是:小明,年龄是:12,性别是:

    动态参数(不定长参数)

    动态参数有两种:可以接受任意个参数
    *args : 接收的是按照位置传参的值,组织成一个元组
    **kwargs: 接受的是按照关键字传参的值,组织成一个字典
    args必须在kwargs之前

    实例1:
    def
    func(*args): print(args) return func(20,12,34) l1=[1,2,3,4,5,6] func(l1) func(*l1) #站在实参的角度上,给一个序列加上*,就是将这个序列按照顺序打散。给序列加和不加 * 的结果就是是否将其原封不动或打散

    (20, 12, 34)
    ([1, 2, 3, 4, 5, 6],)
    (1, 2, 3, 4, 5, 6)

     实例2:

    def func(**kwargs):
    print(kwargs)
    return

    func(a=12,b=34)
    l1={'a':12,'b':22,'c':55}
    func(**l1)

    {'a': 12, 'b': 34}
    {'a': 12, 'b': 22, 'c': 55}

    *args

    直接传入列表数据和  *[ 列表 ] 的结果是一样的。都能输出成元祖

    def liebiao(*args):
        print(args)
    
    liebiao(1,2,3,4,5)
    liebiao(*[1,2,3,4,5])
    
    (1, 2, 3, 4, 5)
    (1, 2, 3, 4, 5)

    **kwargs 

    接受的是按照关键字传参的值或者给字典加** 都能使结果组织成一个字典

    def zidian(**kwargs):
        print(kwargs)
    
    zidian(**{'name':'alex','age':1000})
    zidian(name = 'tom',age = 1000)
    
    {'name': 'alex', 'age': 1000}
    {'name': 'tom', 'age': 1000}
  • 相关阅读:
    SpringBoot2.x整合JDBC及初始化data.sql和schema.sql脚本
    CentOS7安装docker以及错误解决
    Maven的scope属性作用域范围
    (转)排序算法之简单选择排序
    系统开发博客专栏
    IDEA启动报错Plugin Error Problems found loading plugins的解决办法
    Promise函数的使用
    (转)排序算法之希尔排序
    .net Core AJAX使用Header传递参数,以JsonResult返回信息
    MVC 扩展RadioButtonListFor和CheckBoxListFor
  • 原文地址:https://www.cnblogs.com/jiuyachun/p/10365499.html
Copyright © 2011-2022 走看看