Python笔记2

2019-08-17  本文已影响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

上一篇下一篇

猜你喜欢

热点阅读