美文网首页
Python笔记2

Python笔记2

作者: 操控者 | 来源:发表于2019-08-17 12:07 被阅读0次

    >>> x = {"name":"qiwsir", "lang":["python", "java", "c"]}

    >>> y = x.copy()

    >>> y

    {'lang': ['python', 'java', 'c'], 'name': 'qiwsir'}

    >>> id(x)

    3072241012L

    >>> id(y)

    3072241284L

    >>> y["lang"].remove("c")

    Python中,用a=b的方式复制是假拷贝,仅仅是同一个东西,贴上了两个不同的标签(a,b)。用a=b.copy() 是拷贝了,但是,如果b是元组,其中有list,则list仍然会被假拷贝,也就是仅仅有一个通路,通向原来的list,而没有实现真正的拷贝。要实现完全的拷贝,需要import  copy  然后                      a= copy.deepcopy(b)

    关于递归的解释:从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事。故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事。故事是什么呢?“从前有座山,山里有座庙,庙里有个老和尚,正在给小和尚讲故事。故事是什么呢?……””。这就是递归。可以理解为函数内部调用函数本身。

    python是支持多种范型的语言,可以进行所谓函数式编程,其突出体现在有这么几个函数:

    filter、map、reduce、lambda、yield


    >>> new_numbers = [ i+3 for i in numbers ]

    >>> new_numbers

    [3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

    这种列表解析的方式是非常非常好的。

    >>> numbers

    [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]      #把列表中每一项都加3

    >>> map(add,numbers)                #add(x)是上面讲述的那个函数,但是这里只引用函数名称即可

    [3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

    >>> lst1 = [1,2,3,4,5]

    >>> lst2 = [6,7,8,9,0]

    >>> map(lambda x,y: x+y, lst1,lst2)    #将两个列表中的对应项加起来,并返回一个结果列表

    [7, 9, 11, 13, 5]

    >>> reduce(lambda x,y: x+y,[1,2,3,4,5])

    15

    这里reduce是这么被执行了的,1+2+3+4+5=15

    >>> a

    [3, 9, 8, 5, 2]

    >>> b

    [1, 4, 9, 2, 6]

    >>> zip(a,b)        #复习一下zip,下面的方法中要用到

    [(3, 1), (9, 4), (8, 9), (5, 2), (2, 6)]

    什么是类?就我目前的理解,类是一个格式加工厂,类里面可以有很多函数,这些函数就像工厂里的机器一样。每个函数在定义时第一个参数都是self,这个参数是类实例化对象的代表,或者说就是实例化的对象。比如person是一个类( class),a= person(),这样一来,person这个类下的函数,比如有这样一个函数,def name( self, size):函数要对外来的对象a进行加工,而程序员编程时又不可能提前知道这个外来的对象,就必须用一个统一的东西去代替它。就用self去代替。这个和函数的参数是相似的。我是自学Python没人指导,没有看到Python学习手册后面的内容,导致这里的学习出现了停顿。

    类里面有特定的函数,比如__init__,这个函数可以为对象赋予属性。其他我们自己定义的函数貌似不行。

    类不是一旦调用就执行它的所有方法(函数),而是只执行初始化函数( init),其他函数需要调用。

    class person:

          def __init__(self, name)

          self.name= name  #这里设置了一个属性其值为传入的__init__的第二个值,为了方便直接用self.name,当然也可以写成self.xx

        self.email="121058"  #这里的email属性不是从外部传入的,而是函数内部定义好的。

          def getname()

    girl = Person('canglaoshi')

    name = girl.getName()  #这里函数中并无第二个参数,因此无需传值。第一个参数是self

    如果要将某个变量在任何地方都使用,且能够关联,那么在函数内就使用global 声明,其实就是曾经讲过的全局变量。函数里面的函数,其命名互不影响。def aaa():

                                  a=10

                                  def bbb()

                                          a=8

    相关文章

      网友评论

          本文标题:Python笔记2

          本文链接:https://www.haomeiwen.com/subject/atihsctx.html