zoukankan      html  css  js  c++  java
  • python day11

    字符串的比较

    1、单个字符的比较就是ascii码的比较(对应的十进制)

      'A'->65     'a'->91

        --->'a' > 'A'

    2、多个字符的字符串比较就是一一对应的单个字符的比较,一旦比较出结果就终止比较

      'aBc' < 'aA'

    函数的参数

    形参与实参

      --实参:有实际意义的参数

          --在函数调用中,()里面传入的参数

      --形参:本身没有意义,有实参对它进行赋值之后就具有意义

          --在函数定义过程中,函数名后面()中用来定义函数的参数

    形参范畴

    def add(n1,n2):    #这里的n1,n2本身没有意义,但如果被什么意义的参数赋值,他就具有了什么意义

      return n1,n2

    实参范畴

    print(add(1,2))    #这里的1和2就是实参,实际传入函数的参数

    形参是对实参的值拷贝(实参赋值给形参时,两个id地址一样)

      当实参是不可变类型时,形参在函数内部发生发生改变对外部的实参没有影响

        def fn(num):

          num = 20

          return num

        num = 10

        fn(num)    #这里的num是实参

        print(num)  #虽然调用函数内部的num重新赋值,但是10是不可变类型,所以这里的num还是10

      当实参是可变类型时,形参在函数内部发生改变,外界的实参随之变化

        def fn(num):

          num.append(1)

          return num

        num = [10]

        fn(num)    #这里的num是实参

        print(num)  #调用函数内部的num内部发生改变,这里[10]是可变类型,所以这里的num是[10,1]

    实参的分类

    def fn(n1,n2):

      return n1,n2

    1、位置实参

      --一定按照位置进行传参,且形参和实参的位置必须要一一对应,不然报错

        a = 10

        b = 20

        fn(a,b)

    2、关键字实参

      --用关键字指名道姓的传参,位置可以颠倒

        fn(n1=10,n2=20)  =>n1=10,n2=20

        fn(n2=20,n1=10)  =>n1=10,n2=20

    #注:(传参规则)传参时,位置实参必须放在关键字实参之前

    形参的分类

    1、位置形参(无值位置形参)

      可以被位置实参和关键字实参传值,必须传值

    2、默认形参

      可以被位置实参和关键字实参传值,可以不传值,采用默认值,只在定义的时候赋值一次,我们一般赋值不可变类型

    3、可变长位置形参

      可以接收位置形参和默认形参没有接收完的值,只能接收位置实参传值,接收数量0~N个,用元组接收,0个就是空元组

    4、无值关键字形参

      只能被关键字实参传值,必须传值

    5、有值关键字形参

      只能被关键字实参传值,可以不传值,采用默认值

    6、可变长关键字形参

      可以接收4和5没有接收完的值,只能接收关键字实参传值,接收数量0~N个,用字典接收,0个就是空字典

    函数定义时的声明顺序:位置形参-->默认形参-->可变长位置形参-->无值关键字形参-->有值关键字形参-->可变长关键字形参

    #注:1、位置形参传值时一定要按顺序传值,关键字形参传值时可以不按顺序

        2、可变长位置形参只能接收位置实参,要想被附上值,前面的默认形参就没有意义。

        3、args和kwargs时可变长形参的变量名,所以是可以自定义的,但是我们约定俗成用args和kwargs

    常出现的组合

    1)def f1(*args,**kwargs): pass    #第一类

    ----------------------------------------------------

    2)def f2(a,b=10,**kwargs): pass  

    3)def f3(a,*args,**kwargs): pass    #第二类

    ----------------------------------------------------

    4)def f4(a,*,x,**kwargs): pass

    5)def f5(a,*args,x,**kwargs): pass     #第三类

    打散机制

    def fn(*args,**kwargs):

      print(args)

      print(kwargs)

    *单列容器 会打散单列容器   #单列容器在print下也可以打散

      作为参数进行传值时,必须在前面加上*,才可让单列容器被打散且全被args接收

    **双列容器 会打散双列容器   

      作为参数进行传值时,必须在前面加上**,才能把双列容器打散并被kwargs接收

    案例:

    def fn(*args,**kwargs):
        print(args)
        print(kwargs)
    fn((1,2,3),{'a':1,'b':2})       #((1, 2, 3), {'a': 1, 'b': 2})
                                    #  {}    不加*号都会被作为位置实参被args接收
                                    
    fn(*(1,2,3),**{'a':1,'b':2})    #(1, 2, 3)      成功打散案例
                                    #{'a': 1, 'b': 2}

    函数的嵌套调用

      在被调用的函数中去调用其他的函数的功能

        复用之前已经定义好的函数,功能一定是有重叠

    #注:在提前声明的函数中可以嵌套调用之后声明的函数

        但是本函数的调用必须要在之后声明的函数(本函数里嵌套的函数)的之后

    案例分析:

    def max_two(n1,n2):     #求两个数的大着
        if n1 > n2:
            return n1
        return n2
    print(max_two(10,11))
    def max_three(n1,n2,n3):    #求三个数的大着
        a1 = max_two(n1,n2)
        return max_two(a1,n3)
    print(max_three(12,11,14))
    def max_four(n1,n2,n3,n4):     #求四个数的大着
        a1 = max_three(n1,n2,n3)
        return max_two(a1,n4)
    print(max_four(12,123,242,523))
  • 相关阅读:
    cvpr热词云
    第八周总结
    从小工到专家阅读笔记01
    【Spring实战4】10--搭建SpringMVC环境
    【Spring实战4】09---构建Spring web
    【Spring实战4】08---面向切面AOP
    读书
    【Spring实战4】07---Bean的作用域
    【Spring实战4】06---装配Bean(xml)
    【Spring实战4】05---装配Bean(Java)
  • 原文地址:https://www.cnblogs.com/hesujian/p/10771575.html
Copyright © 2011-2022 走看看