创建变量

python的变量不需要声明数据类型。

>>> fred=100
>>> print (fred)
100
>>> fred
100

创建字符串

字符串需要用'',""单引号或者双引号括起来。

>>> sstr='how are you!'
>>> sstr
'how are you!'
>>> print (sstr)
how are you!

在字符串里嵌入值

其中%s是占位符,后面的变量myscore表示被代替的变量

>>> myscore =100
>>> message='I scored %s points!'
>>> print (message % myscore)
I scored 100 points!

如果有多个占位符,则后面的变量要放在括号里,以逗号隔开

列表

列表是某种程度上相当于一个数组,但是比普通数组强大多了。

列表通过[]创建

列表里的元素不一定是同种数据类型

可以通过下标修改列表元素

>>> myList=[9,13,421,'abc']
>>> print (myList)
[9, 13, 421, 'abc']
>>> myList[0]='ok'
>>> print (myList)
['ok', 13, 421, 'abc']

可以利用print输出部分列表内容,注意范围是左闭右开。

>>> print (myList[2:4])
[421, 'abc']

向列表中增加新元素需要用append。直接通过下标来设置值是不对的,会越界。

>>> myList[4]=1111
IndexError: list assignment index out of range
>>> myList.append(1111)
>>> print (myList[4])
1111

删除指定元素

>>> del myList[0]
>>> print (myList)
[13, 421, 'abc', 1111]
>>> del myList[1:3]
>>> print (myList)
[13, 1111]

列表支持+和*运算。

+可以连接两个列表,*可以将指定列表重复n遍。

元组

元组更像C里面的数组,它一旦创建后就不能改动了,包括元组的大小和值。所以元组相当于一个常量数组。

元组用()创建

>>> f=(1,2,3,4)
>>> f[0]=10
TypeError: 'tuple' object does not support item assignment

字典

字典的每个元素都有一个键和值,通过键找到值。

字典用{}来创建

>>> myMap={'a':'A','xxx':'fsadfsg'}
>>> print (myMap)
{'xxx': 'fsadfsg', 'a': 'A'}
>>> print (myMap['xxx'])
fsadfsg

不能访问不存在的键对应的元素

>>> print (myMap['b'])
KeyError: 'b'

字典的修改值和删除元素都是通过键来的。

字典的加法没有意义的。

if和else语句

缩进在python里面非常重要。if条件后面需要有一个引号。

>>> age=30
>>> if age>20:
    print ('You are too old!')

You are too old!

如果if后面有多个条件 ,根据它们的关系可以使用and、or。

如果是多重if:

>>> age=
>>> :
    print ('You are too old!')
elif age>:
    print ('You are ok!')
else:
    print ('You are too young!')

You are too old!

注意,同一个语句块的代码要有相同的缩进!否则会报错。

使用for循环

这里用到了range这个函数,显然是左闭右开的。它返回一个迭代器保存到x中。

>>> ,):
    print(x)

如果把range的迭代器保存到list中

>>> print (list(range(,)))
[, , , , , ]

用for循环输出列表

>>> myList=['zzz','qweqw','avc','qweqw','iuyo']
>>> for i in myList:
    print (i)

zzz
qweqw
avc
qweqw
iuyo

while循环

这个比较简单

>>> a=
>>> :
    a=a+

>>> print (a)

使用函数

用range函数来创建列表

>>> myList=list(range(0,5))
>>> print (myList)
[0, 1, 2, 3, 4]

定义函数

使用关键字def来定义,注意后面有个:

>>> def testfunc(myname):
    print ('hello %s' % myname)

>>> testfunc('Jack')
hello Jack

注意函数内的变量不能在函数外使用,函数外的变量可以在函数内使用

模块

通过import导入模块

>>> import time
>>> print (time.asctime())
Sun Aug 17 16:34:26 2014

sys.stdin.readline()读一行字符串

>>> import sys
>>> a=int(sys.stdin.readline())

>>> print (a)

>>> print (sys.stdin.readline())
abc  xxx
abc  xxx
>>> x,y=sys.stdin.readline().split()

>>> print (x)

>>> print (y)

split是字符串的函数,返回的结果可以存在一个列表里,但是结果是str。如果需要整数,需要用int转化一下。

类与对象

以下分别是创建基类,派生类和创建对象

>>> class Animals:
    pass

>>> class Mammals(Animals):
    pass

>>> p=Mammals()

self参数可以用来从类中的一个函数调用另外的一个函数。self其实就是指该对象。

>>> class Animals:
    def move(self):
        pass
    def dance(self):
        self.move()
        pass

初始化对象

用__init__来初始化对象。注意前后都是两个_

>>> class Animals:
    def __init__(self,age):
        self.age=age
        pass
>>> a=Animals()
>>> print (a.age)

 =没有创建新对象

>>> a=Animals()
>>> print (a.age)

>>> b=a
>>> b.age=
>>> print (a.age)

说白了b和a指向的都是同一个对象

对于list也是同样

>>> myList1=[111,222,333]
>>> myList2=myList1
>>> myList2[0]=999
>>> print (myList1)
[999, 222, 333]
>>> myList2.append(555)
>>> print (myList1)
[999, 222, 333, 555]

这里会发现其实在赋值之后两个变量还是指向同一个对象。

用copy模块来复制

>>> import copy
>>> a=Animals()
>>> b=copy.copy(a)
>>> b.age=
>>> print (a.age)

>>> print (b.age)

这样a和b分别指向不同的对象了。

但是对于list呢。

>>> myList1=[,,]
>>> myList2=copy.copy(myList1)
>>> myList2[]=
>>> print (myList1)
[, , ]
>>> print (myList2)
[, , ]
>>> myList2.append()
>>> print (myList2)
[, , , ]

但是注意int属于基本数据类型

>>> a=Animals()
>>> b=Animals()
>>> myList1=[a,b]
>>> myList2=copy.copy(myList1)
>>> myList2[].age=
>>> print (myList1[].age)

>>> print (myList2[].age)

可以发现copy是浅拷贝,也就是说它拷贝了list却没有拷贝list里面的对象,两个list里存的其实还是相同的对象。但是这是两个不同的list。

对此有与copy对应的deepcopy,它可以创建新的对象。

>>> a=Animals()
>>> b=Animals()
>>> myList1=[a,b]
>>> myList2=copy.deepcopy(myList1)
>>> myList2[].age=
>>> print (myList1[].age)

>>> print (myList2[].age)

python入门笔记的更多相关文章

  1. Python入门笔记(13):列表解析

    一.列表解析 列表解析来自函数式编程语言(haskell),语法如下: [expr for iter_var in iterable] [expr for iter_var in iterable i ...

  2. [Python]Python入门笔记:语法基础

    Python笔记 一.基本语法 1.1 注释 文档注释: """contents""" 多行注释: ''' contents ''' 单行注 ...

  3. python 入门笔记

    1.pip包安装 pip install *** pip 中http和https代理设置(/etc/profile) 2.强制保存 :w !sudo tee % 3.cffi是python调用C的包 ...

  4. Python入门笔记(26):Python执行环境

    一.python特定的执行环境 在当前脚本继续进行 创建和管理子进程 执行外部命令或程序 执行需要输入的命令 通过网络来调用命令 执行命令来创建需要处理的输出 动态生成Python语句 导入Pytho ...

  5. Python入门笔记(25):Python面向对象(2)

    一.类 类就是一个数据结构,封装了数据和操作. 类的声明与函数的声明十分类似: class newClass(object): """class documentatio ...

  6. Python入门笔记(24):Python面向对象(1)速成

    一.Python经典类与新类 经典类:如果没有直接或间接的子类化一个对象,也就是说如果没有指定一个父类,或者是如果子类化的基本类没有父类,那么就定义了经典类: class classics: 'def ...

  7. Python入门笔记(23):模块

    一.模块基础 1.模块 自我包含,且有组织的代码片段就是模块 模块是Pyhon最高级别的程序组织单元,它将程序代码和数据封装起来以便重用.实际的角度,模块往往对应Python程序文件. 每个文件都是一 ...

  8. Python入门笔记(22):Python函数(5):变量作用域与闭包

    一.全局变量与局部变量 一个模块中,最高级别的变量有全局作用域. 全局变量一个特征就是:除非被删除,否则他们存活到脚本运行结束,且对于所有的函数都可访问. 当搜索一个标识符(也称变量.名字等),Pyt ...

  9. Python入门笔记(21):Python函数(4):关于函数式编程的内建函数

    一.关于函数式编程的内建函数 apply()逐渐被舍弃,这里不讨论 1.filter() #filter(func,seq) """纯Python描述filter函数&q ...

随机推荐

  1. 如何查看python 的api

    python 搭建好python开发环境后,怎么查看api文档呢? 其实很简单: 首先打开命令行,在dos窗口输入: python -m pydoc -p 4895 python -m pydoc - ...

  2. MR21、MR22和CK24的区别

      MR21和CK24都是用于修改物料标准价,但两者功能和用法上有所区别:MR21是直接更改单价, CK24是在CK11N或CK40N价格评估的基础上的价格核发, CK24记录价格评估, 价格评估在做 ...

  3. 不在折腾---storm-0.9.2-incubating分布式安装

    安装一个zookeeper集群 > 请参考:不在折腾----zookeeper-3.4.5 上传strom的安装包 解压 配置,conf/storm.yaml * 所使用的zookeeper集群 ...

  4. DOM hash

    前段时间做的一个H5专题,用到了hash解决问题,特意记录一下.DOM hash的详细内容可以点击链接查看. hash就是uri中#及后面的部分,例如:www.google.com.hk#123的#1 ...

  5. 使用requestAnimationFrame做动画效果一

    最近学习了requestAnimationFrame,看了张鑫旭直白易懂,但是某些地方语言过于裸露的文章http://www.zhangxinxu.com/wordpress/2013/09/css3 ...

  6. Github windows客户端简单使用教程

    1. 首先到官网下载Github客户端,官网地址:https://desktop.github.com/ 2. 点击上图红框的按钮开始下载客户端. 3. 双击下载好的客户端,开始安装. 双击之后出现一 ...

  7. boost.asio与boost.log同时使用导致socket不能正常收发数据

    现象: 1. 没有使用boost.log前能正常收发数据 2.加入boost.log后async_connect没有回调 fix过程: 1. gdb调试发现程序block在pthread_timed_ ...

  8. mybatis高级(3)_延迟加载_深度延迟_一级缓存_二级缓存

    设置延迟加载需要在mybatis.xml中设置 注: 侵入式延迟加载为真时是延迟加载 侵入式延迟加载为假时是深度延迟加载 <!-- 延迟加载和深度延迟加载 --> <settings ...

  9. Android版本

    Android自从3.0版本开始引入了Fragment的概念,它可以让界面在平板上更好地展示   Fragment建议继承android.app.Fragment的包,另外support.v4包主要是 ...

  10. 基于bootstrap的后台二级垂直菜单[转]

    最近做一个后台的管理项目,用到了Twitter推出的bootstrap前端开发工具包,是一个基于css3/html5的框架.花周末时间,写了一个非常简单后台的菜单.本着开源的精神,现在把它分享出来(呵 ...