python的随笔记

2019-10-15  苍穹 


  • Pythonand 操作符 和C语言的 && 操作符 有何不同?

    关于逻辑and和or,python的用法和C的用法主要异同点如下:
        1、当两个操作数均为逻辑值时,与我们通常理解的逻辑运算一致;
        2、当第一个操作数为逻辑值,第二个操作数为其他类型时,执行以下规则:
            a and b:在a为false的时候,返回a,否则返回b。
            a or b: 在a为true的时候,返回a,否则返回b。

        总之,and与or返回的不仅有true/false的语义,还返回了它的值。

        eg:

            a = 0

            b = 4

            c = (a and b)

        上例得到C=0而不是False

            a = 1

            b = 0

            c = (a or b)

        上例得到C=1而不是True
  • 使用 int() 将小数转换为整数,结果是向下取整。如何使得 int() 按照“四舍五入”的方式取整

    a = int(a+0.5)

  • x = 1,y = 2,z = 3,请问如何快速将三个变量的值互相交换?
    x, y, z = z, x, y



  • 可变参数函数的使用
    定义方式 def function(*arg)


    如:给定一组数字a,b,c……,请计算a^2 + b^2 + c^2 + ……

    def calc(*num):

            sum = 0 

            for n in num:

                sum = sum + n * n 

            return sum

    calc(1,2,3,4)

    如果已经有一个list或者tuple,要调用一个可变参数怎么办?可以这样做:

    nums = [1,2,3,4]

    calc(nums[0],nums[1],nums[2],nums[3])

    太繁琐,Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去

    nums = [1,2,3,4]

    calc(*nums)

    *nums表示把nums这个list的所有元素作为可变参数传进去

  • 关键字参数

    可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。

    def person(name, age, **kw): 

        print('name:', name, 'age:', age, 'other:', kw)


 person('Adam', 45, gender='M', job='Engineer')
 结果:name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
    和可变参数类似,也可以先组装出一个dict,然后,把该dict转换为关键字参数传进去
 extra = {'city': 'Beijing', 'job': 'Engineer'}
 person('Jack', 24, **extra)
 结果:name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
**extra表示把extra这个dict的所有key-value用关键字参数传入到函数的**kw参数,kw将获得一个dict,注意kw获得的dict是extra的一份拷贝,对kw的改动不会影响到函数外的extra  
  • 命名关键字参数,限制关键字参数的名字

    def person(name, age, *,city, job)

如果函数定义中已经有了一个可变参数,后面跟着的命名关键字参数就不再需要一个特殊分隔符*

    def person(name, age, *args,city, job)

命名关键字参数调用时必须传入参数名,这和位置参数不同。如果没有传入参数名,调用将报错

    错误调用:person('张三',20,'ChengDu','IT')

    正确调用:person('张三',20,city='ChengDu',job='IT')


  • 对List实现下标循环
  Python内置的enumerate 函数可以把一个list变成索引-元素对


       for i,value in enumerate(list):

           print(i,value)

  • 凡是可作用于for循环的对象都是Iterable类型
  • 凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列
集合数据类型如list dict str 等是Iterable 但不是Iterator ,不过可以通过iter() 函数获得一个Iterator 对象。



197°/1972 人阅读/0 条评论 发表评论

登录 后发表评论