变量:
声明
x = 3
非常简单 不用加 var $ 后面也不用跟 ;
注意 在使用变量的时候一定要为他赋值 否则会爆未定义错误
print打印多个表达式 可以使用 逗号 输出
print 'age' , 42
序列解包
x,y,z = 1,2,3
print x,y,z
交换变量
x,y = y,x
链式赋值
x = y = fun()
相当于 y = fun() x = y
不是 y = fun() x = fun()
高级表达式
x is y x和y是一个对象吗
x is not y x和y不是一个对象吗
x in y x 是 y 的成员
x not in y x不是y的成员
断言 assert
如果需要程序某一个条件一定为真才能让程序正常执行 那么就可以用断言
获取所有自定义变量
内置函数 vars() 可以获取所有当前作用域的变量
但是如果在函数里面有定义变量 a 再想获取外部的变量 a 可以通过 globals()['a'] 来获取外部变量
语句:
for ....else
例子
for i in range(0):
print i
else
print 'end'
for循环会在结束后运行else语句
列表式推到 ---- 轻量级循环
[x*x for x in range(10)]
[x*x for x in range(10) if x %3 == 0]
如果有个语句块什么事情都不做 用pass 做占位符
如果有些变量对象 不需要用了 可以用 del 删除
有时候需要动态的执行python语句 可以用 exec 或者 eval 但是需要谨慎
exec "print 'hello'"
类似求值 exec语句会执行一系列python语句 而 eval会计算python表达式 并且返回结果值
eval
exec eval 尽量用命名空间包裹
数学:
1 / 2 = 0
1/ 2.0 = 0.5
如果想要得到小数 必须除数和被除数之间有个事小数
幂运算
2 ** 3 = 8
后面加个L 是长整形 100000000000000000000000L
进制
0xAF 十六进制 175
010 八进制 8
数学模块自带的函数
match.floor() 向下取整 33.9 ===》 33.0
match.ceil() 向上取整 33.1 ===》 34.0
match.sqrt() 计算平方根
_(函数)_round 四舍五入最近的数
_(函数)_abs() 取绝对值
_(函数)_long() 转为长整数
_(函数)_float() 转为浮点数
nan 是一个特殊值的简写 意思是 “not number ” 非数值
基础:
获取用户输入
x = input("input:")
input会根据用户的输入来做类型的转换, 比较严格必须是 合法的python类型 如果不输入会报错
获取用户的输入
x = raw_input("input:")
raw_input 则会把用户的输入都作为一个字符串来处理 就算什么都不输入 也不报错
linux下直接运行脚本 第一行加上
#!/usr/bin/env python
注释
单行注释用 #
字符串:
python单引号双引号没区别
我们用 \ 来转义字符
“aaa” "bbb" 两个字符串可以用空格连接
“aaa” + "bbbb" 也可以用加号连接
r'aaaa\t' 字符串前面加r表示输出原始字符串 不会被转义
"aaaaa" + 100 这样是不对的字符串不可以和数字相加
如果要编写一个非常长的字符串 可以用 ''' 来代替普通的引号 这样就能跨越很多行了
也可以用三个双引号 """
- 普通字符如果想实现多行输入 可以在末尾加个 \
print "aaaaaa \
bbbbb"
- 如果想在python字符串中输入 \ 可以用两个 \ 来表示 比如 “aaaaa \\ aaaa”
但是如果不想这样 可以使用原始字符串
print r"sdfsdfsfsdf \ sdfsdfsd " 这样就不会转义字符串了 但是这样一来原始字符串也不支持 \ 的方式换行
python 3.X 之前 python默认字符串编码是8位的ASCII码,所以默认不支持中文 也不支持 unicode 如果要输出中文 要在头部加上
#-*-coding:utf-8-*-
python 2.X 如果想输出unicode 字符串 使用前缀 u u'sdfdsfsdfsdfdsf'
str() 函数把接收的参数转换成字符串 值是给人看的 可读性很好 但是不能传给eval
repr() 接收到的参数 放到一个新创建的字符串里并显示 值是给python看的 直接就是格式好的字符串
模块:
可以把模块想象成导入到python以增强其功能的扩展,需要使用特殊的命令 import 来导入模块,
例子:
import math
math.floor(32.9)
注意她怎么起的作用 用import导入的模块 用 模块.函数 格式来使用这个模块的函数
或者
from somemodule import *
可以给导入的模块加个别名
import math as fuck
fuck.floor(33.1)
在确定自己不会导入多个同名函数(从不同大模块)情况下,可以只导入模块下的某个函数
from math import sqrt
sqrt(9) 这样就可以直接使用函数 而不用使用 模块.函数
可以给导入的函数加个别名
from math import ceil as fuck
fuck(33.1)
事实上,可以使用变量引用函数 (或者python中的大多数对象)比如通过foo=math.sqrt 进行赋值 然后就可以使用foo()
__future__ 魔法模块