教6个月前的Neil学Python

2017-08-19  本文已影响0人  Gouwal

@[Python][ch01]

教6个月前的自己学Python


Python 数据类型

数据类型练习:

    name = {1:'zhang', 3:'nai', 'a': 'tao', 3: 'neil', 4: 'tao', 1: 'Neil'}
    print (name)

    print (name.values())
    print (name.keys())

    b = set(name.values())
    print (b)

    c = set(name.keys())
    print (c)
    d = b&c
    print (d)

    diff = b^c
    print (diff)
    {1: 'Neil', 3: 'neil', 'a': 'tao', 4: 'tao'}
    dict_values(['Neil', 'neil', 'tao', 'tao'])
    dict_keys([1, 3, 'a', 4])
    {'neil', 'Neil', 'tao'}
    {1, 3, 'a', 4}
    set()
    {1, 'tao', 3, 'a', 4, 'neil', 'Neil'}



# random 4 different numbers - 02
# -*- coding: utf-8 -*-

import random

guess_number = []

list = [i for i in range(10)]

print ("Original list =", list)

# compare above out put style,

for i in range(4):

    print (("i = %s") % i)

    j = random.randint(0, len(list) - 1)
    print (("j = %s") % j)

    guess_number.append(list[j])
    print(("list['j' = %s] = %s ") % (j, list[j]))
    print("guess_number = %s " % guess_number)

# you may can optimize above output code.

    print(("list.pop('j' = %s) = %s") % (j,list.pop(j)))

##    list.pop(j)
# It very import to cancel above code, because list.pop(j) already excute in code "print.....

    print(("list after pop ['j' = %s]) = %s") % (j, list))
    print ("*"*10)
    print ("*"*20)

print(f'method 2 (list): guess_number = {guess_number}')
print (len(list)-1)
print (list.pop(j))

# you can guess why abve list.pop(j) = 7?

print (guess_number[1:3])


PS C:\Users\CNNEZHA2\mystuff\Python-exercises_2017_07> py36 ex10.py

Original list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
i = 0
j = 5
list['j' = 5] = 5
guess_number = [5]
list.pop('j' = 5) = 5
list after pop ['j' = 5]) = [0, 1, 2, 3, 4, 6, 7, 8, 9]
**********
********************
i = 1
j = 2
list['j' = 2] = 2
guess_number = [5, 2]
list.pop('j' = 2) = 2
list after pop ['j' = 2]) = [0, 1, 3, 4, 6, 7, 8, 9]
**********
********************
i = 2
j = 6
list['j' = 6] = 8
guess_number = [5, 2, 8]
list.pop('j' = 6) = 8
list after pop ['j' = 6]) = [0, 1, 3, 4, 6, 7, 9]
**********
********************
i = 3
j = 4
list['j' = 4] = 6
guess_number = [5, 2, 8, 6]
list.pop('j' = 4) = 6
list after pop ['j' = 4]) = [0, 1, 3, 4, 7, 9]
**********
********************
method 2 (list): guess_number = [5, 2, 8, 6]
5
7
[2, 8]





# random 4 differernt numbers-01

import random
guess_number = []

list = [i for i in range(10)]
guess_number = random.sample(list, 4)

# for test
print (guess_number)

while guess_number[0] == 0:
    guess_number = random.sample(list, 4)

# for test
    print("new_guess_number", guess_number)

print (f'method 1(random.sample): guess_number = {guess_number}')

# for test different print code
print (guess_number)


PS C:\Users\CNNEZHA2\mystuff\Python-exercises_2017_07> py36 ex09.py
[5, 7, 9, 2]
method 1(random.sample): guess_number = [5, 7, 9, 2]
[5, 7, 9, 2]
PS C:\Users\CNNEZHA2\mystuff\Python-exercises_2017_07> py36 ex09.py
[4, 1, 9, 6]
method 1(random.sample): guess_number = [4, 1, 9, 6]
[4, 1, 9, 6]
PS C:\Users\CNNEZHA2\mystuff\Python-exercises_2017_07> py36 ex09.py
[9, 4, 6, 8]
method 1(random.sample): guess_number = [9, 4, 6, 8]
[9, 4, 6, 8]
PS C:\Users\CNNEZHA2\mystuff\Python-exercises_2017_07> py36 ex09.py
[0, 4, 7, 2]
new_guess_number [2, 7, 8, 9]
method 1(random.sample): guess_number = [2, 7, 8, 9]
[2, 7, 8, 9]
PS C:\Users\CNNEZHA2\mystuff\Python-exercises_2017_07>



函数

菜鸟教程


文本记录(Markdown)

1. 目前文档发布流程 (使用maxiang 编辑,简书发布)

流程图(maxing代码):
st=>start: 在maxiang编辑
op1=>operation: maxiang直接同步到evernote
cond=>condition: 检查,没有错误
op2=>operation: 复制maxing代码到简书发布
e2=>end: 最终结束所有发布与保存!

st->op1->cond
cond(yes)->op2->e2
cond(no)->op1


最终简书发布流程图

2. 目前 maxiang 编辑中的代码编辑流程

流程图(maxing代码):
st=>start: 从Atom拷贝到MarkdownPad2 
op1=>start: 拷贝代码从MarkdownPad2 到 maxing
e1=>end: 检查相关代码间距
e2=>end: 发布

MarkdwonPad2 => maxing

st->op1->e1->e2

code upload process

Class 类.....累 /面向对象编程......对象

定义:

  1. 实例变量:定义在方法中的变量,只作用于当前实例的类

  2. 方法:类中定义的函数。

  3. 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法

    面向对象 (Object Oriented Programming) 的设计思想是从自然界中来的,因为在自然界中,类(Class)实例(Instance)的概念是很自然的。Class是一种抽象概念,比如我们定义的Class——Student,是指学生这个概念,而实例(Instance)则是一个个具体的Student,比如,Bart Simpson和Lisa Simpson是两个具体的Student。所以,面向对象的设计思想是抽象出Class,根据Class创建Instance。面向对象的抽象程度又比函数要高,因为一个Class既包含数据,又包含操作数据的方法。

实例:

self : init方法的第一个参数

Python内置类属性:

  1. dict : 类的属性(包含一个字典,由类的数据属性组成)
  2. doc : 类的文档字符串
  3. name: 类名
  4. module: 类定义所在的模块(类的全名是 main.className,如果类位于一个导入模块mymod中,那么className.module 等于 mymod
  5. bases : 类的所有父类构成元素(包含了一个由所有父类组成的元组)

类的继承:

  1. 在继承中基类的构造init()方法)不会被自动调用,它需要在其派生类的构造中亲自专门调用
  2. 在调用基类的方法时,需要加上基类的类名前缀,且需要带上self参数变量。区别于在类中调用普通函数时并不需要带上self参数
  3. Python总是首先查找对应类型的方法,如果它不能在派生类中找到对应的方法,它才开始到基类中逐个查找。(先在本类中查找调用的方法,找不到才去基类中找)。
  4. 通常,如果没有合适的继承类,就使用object类,这是所有类最终都会继承的类.

类的私有属性:

python对象销毁(垃圾回收):

Python 使用了引用计数这一简单技术来跟踪和回收垃圾。在 Python 内部记录着所有使用中对象各有多少引用。一个内部跟踪变量,称为一个引用计数器。当对象被创建时, 就创建了一个引用计数, 当这个对象不再需要时, 也就是说, 这个对象的引用计数变为 0 时, 它被垃圾回收。但是回收不是"立即"的, 由解释器在适当的时机,将垃圾对象占用的内存空间回收。

垃圾回收机制不仅针对引用计数为0的对象,同样也可以处理循环引用的情况。循环引用指的是,两个对象相互引用,但是没有其他变量引用他们。这种情况下,仅使用引用计数是不够的。Python 的垃圾收集器实际上是一个引用计数器和一个循环垃圾收集器。作为引用计数的补充, 垃圾收集器也会留心被分配的总量很大(及未通过引用计数销毁的那些)的对象。 在这种情况下, 解释器会暂停下来, 试图清理所有未引用的循环。

Python code style

1. Immediately inside parentheses, brackets or braces.
Yes: spam(ham[1], {eggs: 2})
No:  spam( ham[ 1 ], { eggs: 2 } )

2. Immediately before a comma, semicolon, or colon:
Yes: if x == 4: print x, y; x, y = y, x
No:  if x == 4 : print x , y ; x , y = y , x


3.  However, in a slice the colon acts like a binary operator, and should have equal amounts on either side (treating it as the operator with the lowest priority).  In an extended slice, both colons must have the same amount of spacing applied.  Exception: when a slice parameter is omitted, the space is omitted

Yes:
ham[1:9], ham[1:9:3], ham[:9:3], ham[1::3], ham[1:9:]
ham[lower:upper], ham[lower:upper:], ham[lower::step]
ham[lower+offset : upper+offset]
ham[: upper_fn(x) : step_fn(x)], ham[:: step_fn(x)]
ham[lower + offset : upper + offset]

No:
ham[lower + offset:upper + offset]
ham[1: 9], ham[1 :9], ham[1:9 :3]
ham[lower : : upper]
ham[ : upper]


上一篇 下一篇

猜你喜欢

热点阅读