Python系统学习

原创 2015年12月22日 10:02:30

What is Python

Python is an east-use program language, It is useful now, and has been implied to many open-source project, also is Go, which has been used in my favorite Docker.

Basic

Small examples

  • 斐波那契数序列
a,b=0,1
while b<10:
    print(b, [end=' '])
    a,b=b,a+b

Attention: end=’ ’ can replace \n with ’ ‘

Key Word

if - elif - else

if x<0:
    x=0
    print("Negative changed to zero")
elif x==0:
    print("Zero")
elif x==1:
    print("Single")
else:
    print("More")

for

for x in array
    print(x)

break, continue,loop-else

for x in array
     if n%x==0: break;
     else continue;

pass

一般用于提醒,类似于空语句

del

使用索引而不是值从列表中删除一个元素。与具有返回值得pop()方法不同。del语句也可以用来删除列表的一个片段或者清空整个列表

del a[index]
del a[x:y]
del a[:]
del a: 注销变量,收回空间

SP function

range & len

for i in range(begin, stop, step)
    print(i)
for i in rande(len(array))
    print(array[i])

list

print(range(10))
list(range(10))

append

array.append(element)

Custom function

def

def fun(parameters list)
    functional module
    return result
def fib(n):
    result=[]
    a,b=0,1
    while b<n:
        result.append(b)
        a,b=b,a+b
    return result
i=6
def f(arg=i):
    print(arg)
f()

The ans is 6
默认值只被赋值一次

def f(a,L=[]):
    L.append(a)
    return L
print f(2)
print f(1)
print f(3)

The ans is
[2]
[2, 1]
[2, 1, 3]
You can also use none to replace the [] to avoid the accumulate ans.
Of course, you can point many parameters who has its default value.

learn of argments

1> * & **
*用来传递任意个无名字参数,这些参数会以一个元组的形式访问
**用来传递任意个有名字的参数,这些参数用字典来访问
(*name必须出现在**name之前)

changeable parameters list

We use *name to include this point
Also, **name can distinguish the parameters.

Lambda

fun = lambda [parameter]:ans
print(fun(argments))
def make_incrementor(n):
    return lambda x:x+n
>>fun = make_incrementor(42) [fun=x+42]
>>fun(2)
>>44

Data Structure

list

list.append(x): 在列表的末尾添加一个元素
list.extend(L): 在列表的末尾添加一个指定列表的所有元素
list.insert(i,x): 在指定位置插入一个元素
list.remove(x): 删除列表中值为x的第一个元素,如果不存在这样的元素则引发错误
list.pop(i): 删除列表中指定位置元素并返回它(指元素值)。如果省略索引,a.pop()会删除并返回列表中的最后一个元素
list.index(x): 返回列表中值为x的第一个元素的索引,如果不存在这样的元素则引发错误
list.count(x): 返回列表中元素x出现的次数
list.sort(): 对列表中的元素进行排序
list.reverse(): 反转列表中的元素

用列表实现堆栈
要想在堆栈顶部添加一个元素,可以使用append()方法;要想要返回堆栈顶部的元素,可以使用不指定索引参数的pop()方法

用列表实现队列
想要在对列尾部添加一个元素,可以使用append()方法;想要返回对列首部的元素,可以使用指定参数为0的pop()方法

简单的列表推导式

[x*y for x in vec1 for y in vec2]
[vec1[i]*vec2[i] for i in range(len(vec1))]

元组

u = x, y, z: 合并
x, y, z = u: 分解

set [no repeat elements]

set = {x, y, z, ...}
set2 = set({x, y, z, ...})
- | & ^ operations
a={x for x in 'abracadabra' if x not in 'abc'}

key:value

Deal Case

String

Class

This is a big top, I learn it because of necessary to modify gem5.

definition

class<__class_name>
<code>
__private_attrs // private statement, self.__private_attrs
def fun // it should include argument-self
__private_method // private fun, self.__private_method
__init__  构造函数,在生成对象时调用
__del__   析构函数,释放对象时使用
__repr__ 打印,转换
__setitem__按照索引赋值
__getitem__按照索引获取值
__len__获得长度
__cmp__比较运算
__call__函数调用
__add__加运算
__sub__减运算
__mul__乘运算
__div__除运算
__mod__求余运算
Example:
#类定义
class people:
    #定义基本属性
    name = ''
    age = 0
    #定义私有属性,私有属性在类外部无法直接进行访问
    __weight = 0
    #定义构造方法
    def __init__(self,n,a,w):
        self.name = n
        self.age = a
        self.__weight = w
    def speak(self):
        print("%s is speaking: I am %d years old" %(self.name,self.age))

p = people('tom',10,30)
p.speak()

inherit

class<__class_name>(__parent_class)
<code>
Example:
#单继承示例
class student(people):
    grade = ''
    def __init__(self,n,a,w,g):
        #调用父类的构函
        people.__init__(self,n,a,w)
        self.grade = g
    #覆写父类的方法
    def speak(self):
        print("%s is speaking: I am %d years old,and I am in grade %d"%(self.name,self.age,self.grade))

s = student('ken',20,60,3)
s.speak()

系统学习Python

前言 问:有个大你五岁,在领域内还做得很不错的男朋友的体验是什么? 答:有个老师,叫你系统学习某一样知识,终于感觉自己不是散养得了 (╬▔皿▔)凸 还有种感觉就是又回到了小学,怕老师的阶段 不好好学习...
  • u013036704
  • u013036704
  • 2016年01月11日 11:52
  • 396

零基础如何系统的学习python

零基础如何系统的学习python
  • qq_38275284
  • qq_38275284
  • 2017年04月11日 18:12
  • 344

Python程序员学习路线图

作者:黄哥 链接:https://zhuanlan.zhihu.com/p/21523842 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 Python...
  • Lina_ACM
  • Lina_ACM
  • 2016年09月19日 21:00
  • 3778

python登陆教学系统

以前的总是爬图片,邮箱什么的,,感觉不太炫酷,学了几天python的登陆,现在来梳理一下, 1、数据传送 数据传送分为get,post方式。get方式是直接以链接的方式访问,链接里面包含了包含了所...
  • bzd_111
  • bzd_111
  • 2015年12月16日 10:37
  • 1340

Python 爬虫学习稿(一)

本次学习的环境是基于Python 3.3.5,实验的工具是Pycharm 5.0.1 基础的知识我就不再介绍,比如HTTP的基础知识、爬虫的相关背景 直接开始爬虫的学习吧!一、用Python抓取指...
  • tan6600
  • tan6600
  • 2016年01月10日 00:52
  • 942

2016.4.10,知数堂在线分享《如何编写优雅的python代码》

知数堂2016年第三次在线分享活动启动,由资深Python专家张老师为我们带来主题分享《如何编写优雅的python代码》,张老师是某大型公司云计算docker方向后台开发负责人,具有5年以上Pytho...
  • n88Lpo
  • n88Lpo
  • 2016年04月07日 22:37
  • 46

如何系统学习java体系?

学java首先你要学 J2SE,它是java体系的基础,也是重中之重。很多人往往不重视基础,其实这是舍本逐末的做法。说这么多就是希望大家能重视基础,能在这条路上走的更远。 学j2se有下面几个目标:...
  • yc569484515
  • yc569484515
  • 2014年10月18日 00:25
  • 932

Appium+python自动化学习(一)——启动APP

准备工作: 1、安装Appium 2、安装pip 、JDK、ANDROID-SDK,并配置环境变量 3、配置adb环境 4、安装Node.js 5、安装Appium-Python-C...
  • heshushun
  • heshushun
  • 2017年09月28日 10:54
  • 260

深入系统学习C/C++

毕业后两年内的时间一直都是从事的C++方面的软件开发,可以说有一定的经验,但是每当去面试的时候,面对面试官提出的一些基本的C++题目还是有些吃力,所以决定静下心来从新开始学习C++,废话不多说。 有一...
  • HelloNiGeSB
  • HelloNiGeSB
  • 2016年06月17日 13:09
  • 627

Python3学习(34)--简单网页内容抓取(爬虫入门一)

基础讲多了也不好,懂的人看了烦躁,半懂的人看多了没耐心,我也不能打消了你们学习Python的积极性了,开始爬虫系列基础篇之前,先上一张图,给大脑充充血: 很多人,学习Pyth...
  • Appleyk
  • Appleyk
  • 2017年09月23日 12:33
  • 4034
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Python系统学习
举报原因:
原因补充:

(最多只允许输入30个字)