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

    定义函数
    解决的问题: 代码冗余,修改困难
    可读性差,扩展性差
    1内置函数 :print() sum() max()
    2自定义函数:def 函数名(arg1,arg2,arg3):
    '描述信息'
    函数体
    return 1#任意数据类型
    *********************先定义,后使用**************

    1无参函数 不依赖外部参数 的简单打印语句的函数
    不需要返回值

    print(foo.__doc__) 显示函数描述信息

    2有参函数 依赖外部参数 经过一系列计算 通常需要有返回值

    3空函数 作用:框架立见

    函数的调用:
    空函数:语句形式 foo()
    有参函数:表达式形式 res = foo(1,2) #函数运行结束后返回值看不到,必须将函数的返回值赋给一个变量,再打印出来

    *****************函数的返回值可以是任意类型****************
    不写return 返回None
    return 多个数据类型 返回元组形式
    return 1 返回1

    字符串解压###########a,b,c,d,e = 'hello' a,_,_,_,e = [1,2,3,4,5] a,*_ = 'bhjdsklfhdskflhsjkfhjk'
    元组 字典:(key) 集合 都可以解压

    弱类型 :不用事先定义参数和参数类型,但是使用参数时类型错误会报错

    参数:形参 在函数定义阶段,括号内定义的参数
    实参 在函数调用阶段,括号内定义的参数 不要调用外部的环境变量 可变的数据类型

    *args 按位置传值时,多出来的实参保存在* 以元组的形式赋给args
    **kwargs 按关键字赋值时,把多余的值保存在** 以字典的形式赋给kwargs

    在实参的角度
    规则:按位置传值必须在按关键字传值的前面
    对一个形参只能赋值一次
    1.按照位置传值
    2.按照关键字传值
    3.混着用
    在形参的角度
    规则:默认参数必须放到位置参数的后面
    1.位置参数
    2.默认参数
    3.*args (接收位置传值)
    4.**kwargs(接收关键字传值)
    列:
    def my_max(x,y):
    '求最大值'
    res = x if x>y else y
    res1 = my_max(3,5)
    print(res1) # 打印函数的运行结果,即return 的值
    print(my_max(5,8))

    a =open('函数笔记',encoding = 'utf8')
    head,*_,tail = a # 将文件内容解压,取首尾值,*_ 代表中间多个字符串
    print(head,tail)
    #空函数
    def foo():
    pass
    #利用函数改变外部全局变量的值 尽量不要那么做 ,不推荐
    x = []
    def register(name,name_list=x):
    name_list.append(name)
    res=register('ASB')
    print(res) # 打印函数的返回值None
    print(x)
    register('fff')
    print(x)
    #实参和形参的练习
    def foo(x,*args,y=1,**kwargs):
    print(x)
    print(y)
    print(args)
    print(kwargs)

    foo(1,2)
    foo(x=1,y=2)
    foo(y=2,x=2)
    foo(1,y=2)
    foo(1,2,3,4,y=9,a=2,b=4,c=8)
    默认参数
    x = 'male'
    def register(sex = x):
    print(sex)
    register()

    def bar(x,y,z):
    print(x)
    print(y)
    print(z)
    bar(*(1,2,3)) #将元组打散分别用来赋值

    def auth(name,passwd,sex='male'):
    print(name)
    print(passwd)
    print(sex)
    def foo(*args,**kwargs): #args=('egon',123,'famale') kwargs={}
    print('from foo')
    auth(*args,**kwargs) #*('egon',123) **{}
    foo('egon',123,'famale')
    foo(name='egon',passwd=123)


  • 相关阅读:
    DELPHI 画报表 画表头 stringgrid控件
    蜂巢 Thinking in Agile 我们需要怎样的软件过程(1)
    小博一周年了 将开源进行到底
    Windows Mobile下实现图片的3D效果
    蜂巢 Thinking in Agile 我们需要怎样的软件过程(2)
    Windows 中各种 dll 的导出功能
    以下代码中的两个sizeof用法有问题吗?
    sizeof和strlen
    以下反向遍历array数组的方法有什么错误?
    找错题
  • 原文地址:https://www.cnblogs.com/liuguniang/p/6681489.html
Copyright © 2011-2022 走看看