zoukankan      html  css  js  c++  java
  • 函数基础

    1 #函数定义

    def mylen():-----------------def 是固定的,不能变,他就是定义函数的关键字。def 关键词开头,空格(必须有)+ 函数名称和圆括号(),最后还有一个":"
    
    
                                  函数名:函数名只能包含字符串、下划线和数字且不能以数字开头。给函数起名字要尽量简短,并能表达函数功能。

    """计算s1的长度""" ---------------注释:每一个函数都应该对功能和参数进行相应的说明,应该写在函数下面第一行。以增强代码的可读性。
    s1 = "asdfghaeknaf" 
    length = 0
    for i in s1:
    length = length+1
    print(length)

    # 函数的调用 mylen()----函数名加括号,执行函数


    2 函数名

         函数是第一类对象概念: a 函数名本质上就是函数的内存地址。b.函数名可以作为一个变量。

    #1,可以互相赋值。

    # def func1():
    # print(666)
    #
    # f1 = func1
    # f1()

    #2,函数名可以当成函数的参数

    def func1():
    print(666)


    def func2(argv):
    argv()
    print(777)

    func2(func1)

    #3,可以当成容器类数据类型的参数

    # def func1():
    # print(666)
    #
    # def func2():
    # print(777)
    #
    # def func3():
    # print(888)

    #实现依次执行以上函数
    # l1 = [func1, func2, func3]
    # for i in l1:
    # i()

    #4,函数名可以当成函数的返回值
    #
    # def func1():
    # print(666)
    #
    # def func2(argv):
    # print(777)
    # return argv
    #
    # ret = func2(func1)
    # ret()

    def func():
        print('in func')
    
    f = func
    print(f)

    3 return返回值功能

    (1)函数中遇到return直接结束函数;
    (2)给函数调用者返回值 ------无return返回none ;有return但不写任何或者写none则返回都是none ;
    return返回单个数 (return length),写什么则返回相应数据;return多个数据,则将多个数据放在一个元组里面返回。
    s1 = 'asskdfjeirfjdkf'
    li = [1, 2, 3, 666, 'xyn']
    def my_len(b): 函数的调用#形参,形式参数,与实参进行一一对应,实参的值会传给形参
    count = 0
    for a in b:
    count+=1
    return count ---函数中不要出现print,则用return返回值,函数外再print。return将结果返回给函数的执行者
    res=my_len(s1) 函数的执行 #实参,实际参数,实际要计算的参数
    print(res)

    形参与实参必须一一对应,数量对应,位置也对应。

    从实参角度出发
    位置参数: 必须一一对应,按顺序
    关键字参数:必须一一对应,不按顺序 ----- a=3
    混合参数:一一对应, 且关键字参数必须在位置参数后面


    从形参角度出发
    #位置参数:必须按顺序一一对应!
    #默认参数:必须在位置参数后面
    #动态参数:*args ----接收在调用时传过来的多余的所有位置参数,以元组形式输出
    **kwargs-----接收在调用时传过来的多余的所有关键字参数,放在一个字典里
    形参摆放顺序:a,b,*args,sex='abc',**kwargs--------位置参数,动态参数,默认参数,动态参数
    关键字参数与默认参数:如果不传会有个默认值,传了会覆盖原先的值。

    4 函数的聚合与打散
    #函数的定义中 *聚合功能,将实参所有位置参数聚合在一个元组里面。**则将实参中关键字参数聚合在一个字典里面
    def funcl(*args,**kwargs):
    print(args)
    print(kwargs)
    l1 = [1,2,3,4]
    l2 = ['xyn','abc',4]
    l3 = (11,22,33)
    #函数的执行中,前面加*具有打散功能。例如*l1 = 1,2,3,4
    funcl(*l1,*l2,*l3)
    # 运行结果
    # (1, 2, 3, 4, 'xyn', 'abc', 4, 11, 22, 33)
    # {}

    # dic1 = {'name1':'alex'}
    # dic2 = {'name2':'xyn'}
    # funcl(dic1,dic2)
    #运行结果
    #({'name1': 'alex'}, {'name2': 'xyn'})
    #{}
    #funcl(**dic1,**dic2)
    #运行结果
    # ()
    # {'name1': 'alex', 'name2': 'xyn'}


    5 课堂练习:1将大的数打印出来
    # def max(a,b):
    # if a > b:
    # return a
    # else:
    # return b
    # print(max(100,102))-----此语句进行两部:首先max()执行函数,并将结果返回给max(),然后print值。

    # def max(a,b):return a if a > b else b
    # print(max(100,102))

    2 统计姓名性别# def register(name,sex='男'):----不传以默认定,传的话被覆盖。
    #     with open('register',encoding='utf-8',mode='a') as f1:
    # f1.write('{} {}\n'.format(name,sex))
    #
    # while True:
    # username = input('请输入姓名:/q 或者 Q 退出')
    # if username.upper() == 'Q':break
    # if 'a' in username:
    # sex = input('请输入性别:')
    # register(username,sex)
    # else:
    # register(username)

     
  • 相关阅读:
    C++学习9 this指针详解
    福建省第八届 Triangles
    UVA 11584 Partitioning by Palindromes
    POJ 2752 Seek the Name, Seek the Fame
    UVA 11437 Triangle Fun
    UVA 11488 Hyper Prefix Sets (字典树)
    HDU 2988 Dark roads(kruskal模板题)
    HDU 1385 Minimum Transport Cost
    HDU 2112 HDU Today
    HDU 1548 A strange lift(最短路&&bfs)
  • 原文地址:https://www.cnblogs.com/xyn123/p/8848969.html
Copyright © 2011-2022 走看看