Python入门学习记录

Python 是一种解释型语言,交互式语言,面向对象语言,

1、先写个hello, world吧

#!/user/bin/python
print (“hello, world!”)

输出: hello, world!

通过python script.py运行脚本

Python中默认的编码格式是 ASCII 格式,在没修改编码格式时无法正确打印汉字,所以在读取中文时会报错。
解决方法为只要在文件开头加入 # -- coding: UTF-8 -- 或者 #coding=utf-8 就行了

#!/user/bin/python

-- coding: UTF-8 --

print (“你好,事件”)

运行python test.py
输出:你好,事件
Python3.X 源码文件默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码

chmod +x test.py # 脚本文件添加可执行权限
在 Python 里,标识符由字母、数字、下划线组成。
在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。
Python 中的标识符是区分大小写的。

Python 可以同一行显示多条语句,方法是用分号 ; 分开
Python 的关键字只包含小写字母:
and exec not
assert finally or
break for pass
class from print
continue global raise
def if return
del import try
elif in while
else is with
except lambda yield

Python 与其他语言最大的区别就是,Python 的代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。
缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行

python中单行注释采用 # 开头。
python 中多行注释使用三个单引号(’’’)或三个双引号(""")
‘’’
这是多行注释,使用单引号。
这是多行注释,使用单引号。
这是多行注释,使用单引号。
‘’’

“”"
这是多行注释,使用双引号。
这是多行注释,使用双引号。
这是多行注释,使用双引号。
“”"

函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始
Python可以在同一行中使用多条语句,语句之间使用分号(;)分割
像if、while、def和class这样的复合语句,首行以关键字开始,以冒号( : )结束,该行之后的一行或多行代码构成代码组。
我们将首行及后面的代码组称为一个子句(clause)。

Python 可以使用 -h 参数查看各参数帮助信息

Python 中的变量赋值不需要类型声明。
等号(=)用来给变量赋值。
Python允许你同时为多个变量赋值。a = b = c = 1
您也可以为多个对象指定多个变量。例如:a, b, c = 1, 2, “john”

Python有五个标准的数据类型:
Numbers(数字)
String(字符串)
List(列表)
Tuple(元组)
Dictionary(字典)

数字数据类型用于存储数值。他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。
当你指定一个值时,Number对象就会被创建
您也可以使用del语句删除一些对象的引用 del var
Python支持四种不同的数字类型:
int(有符号整型)
long(长整型[也可以代表八进制和十六进制])
float(浮点型)
complex(复数)

在 Python3.X 版本中 long 类型被移除,使用 int 替代。

字符串或串(String)是由数字、字母、下划线组成的一串字符 s=“a1a2···an”(n>=0)
python的字串列表有2种取值顺序:
从左到右索引默认0开始的,最大范围是字符串长度少1
从右到左索引默认-1开始的,最大范围是字符串开头

实现从字符串中获取一段子字符串的话,可以使用 [头下标:尾下标] 来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾
s = ‘abcdef’
s[1:5]
输出 ‘bcde’

加号(+)是字符串连接运算符,星号(*)是重复操作。
s=‘abc’
print (s + ‘234’)
输出 abc234

print (s * 2)
输出 abcabc

列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套).列表中值的切割也可以用到变量 [头下标:尾下标] ,就可以截取相应的列表,从左到右索引默认 0 开始,从右到左索引默认 -1 开始,下标可以为空表示取到头或尾。
list=[‘a’,‘b’,‘c’,‘d’]
print (list)
输出 [‘a’, ‘b’, ‘c’, ‘d’]

mlist=[‘123’,‘456’]
print (list + mlist)
输出 [‘a’, ‘b’, ‘c’, ‘d’, ‘123’, ‘456’]

元组用"()"标识。内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。
tuple=(‘apple’, 789, 2.34, ‘jsaon’,89)
print (tuple)
输出:(‘apple’, 789, 2.34, ‘jsaon’, 89)
print (tuple[1:3]) # 输出第二个至第三个的元素
(789, 2.34)

字典用"{ }"标识。字典由索引(key)和它对应的值value组成。
dict={}
dict[‘one’]=‘this is one’;
dict[2]=‘this is two’
print (dict)
输出: {‘one’: ‘this is one’, 2: ‘this is two’}

print (dict.keys())
输出:dict_keys([‘one’, 2])
print (dict.values())
输出:dict_values([‘this is one’, ‘this is two’])

x and y 如果 x 为 False,x and y 返回 False,否则它返回 y 的计算值
x or y 如果 x 是非 0,它返回 x 的值,否则它返回 y 的计算值
not x 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。

a=0
b=3
print (a and b)
输出 0
a=1
print (a and b)
输出:3
print (a or b)
输出:1
a=0
print(a or b)
输出:3
print (not a)
输出:True
a=1
print (not a)
输出:False

in 如果在指定的序列中找到值返回 True,否则返回 False。
not in 如果在指定的序列中没有找到值返回 True,否则返回 False。

a=10
b=20
list=[1,2,3,4,5]
if (a in list):
print (‘a in list’)
else:
print (‘a not in list’)

输出:a not in list

is 是判断两个标识符是不是引用自一个对象
is not 是判断两个标识符是不是引用自不同对象
is 与 == 区别:

is 用于判断两个变量引用对象是否为同一个, == 用于判断引用变量的值是否相等。

从最高到最低优先级的所有运算符:
** 指数 (最高优先级)
~ + - 按位翻转, 一元加号和减号 (最后两个的方法名为 +@ 和 -@)

  • / % // 乘,除,取模和取整除
    • 加法减法

<< 右移,左移运算符
& 位 ‘AND’
^ | 位运算符
<= < > >= 比较运算符
<> == != 等于运算符
= %= /= //= -= += *= **= 赋值运算符
is is not 身份运算符
in not in 成员运算符
not and or 逻辑运算符

Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。
flag=False
name=‘luren’
if name==‘python’:
flag=True
print (‘welcome boss’)
else:
print (name)
输出:luren

if 语句的判断条件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系
if 判断条件1:
执行语句1……
elif 判断条件2:
执行语句2……
elif 判断条件3:
执行语句3……
else:
执行语句4……

for iterating_var in sequence:
statements(s)
内置函数 len() 和 range(),函数 len() 返回列表的长度,即元素的个数。 range返回一个序列的数

Python 语言允许在一个循环体里面嵌入另一个循环
for iterating_var in sequence:
for iterating_var in sequence:
statements(s)
statements(s)

while expression:
while expression:
statement(s)
statement(s)

Python continue 语句跳出本次循环,而break跳出整个循环
Python pass是空语句,是为了保持程序结构的完整性。

for letter in ‘Python’:
if letter == ‘h’:
pass
print ‘这是 pass 块’
print ‘当前字母 :’, letter

int(x [,base ]) 将x转换为一个整数
long(x [,base ]) 将x转换为一个长整数
float(x ) 将x转换到一个浮点数
complex(real [,imag ]) 创建一个复数
str(x ) 将对象 x 转换为字符串
repr(x ) 将对象 x 转换为表达式字符串
eval(str ) 用来计算在字符串中的有效Python表达式,并返回一个对象
tuple(s ) 将序列 s 转换为一个元组
list(s ) 将序列 s 转换为一个列表
chr(x ) 将一个整数转换为一个字符
unichr(x ) 将一个整数转换为Unicode字符
ord(x ) 将一个字符转换为它的整数值
hex(x ) 将一个整数转换为一个十六进制字符串
oct(x ) 将一个整数转换为一个八进制字符串

Python 提供了一个 time 和 calendar 模块可以用于格式化日期和时间
import time; # 引入time模块

ticks = time.time()
print “当前时间戳为:”, ticks

python中时间日期格式化符号:

%y 两位数的年份表示(00-99)
%Y 四位数的年份表示(000-9999)
%m 月份(01-12)
%d 月内中的一天(0-31)
%H 24小时制小时数(0-23)
%I 12小时制小时数(01-12)
%M 分钟数(00=59)
%S 秒(00-59)
%a 本地简化星期名称
%A 本地完整星期名称
%b 本地简化的月份名称
%B 本地完整的月份名称
%c 本地相应的日期表示和时间表示
%j 年内的一天(001-366)
%p 本地A.M.或P.M.的等价符
%U 一年中的星期数(00-53)星期天为星期的开始
%w 星期(0-6),星期天为星期的开始
%W 一年中的星期数(00-53)星期一为星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%Z 当前时区的名称
%% %号本身

import calendar

cal = calendar.month(2016, 1)
print “以下输出2016年1月份的日历:”
print cal

函数:
以下是简单的规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明
函数内容以冒号起始,并且缩进
return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None

def printme(str):
print (str)
return
printme(“我要调用一次函数”)
printme(“再调用一次函数”)

在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。

#可写函数说明
def printinfo( name, age = 35 ):
“打印任何传入的字符串”
print "Name: ", name;
print "Age ", age;
return;

#调用printinfo函数
printinfo( age=50, name=“miki” );
printinfo( name=“miki” );

不定长参数
加了星号(*)的变量名会存放所有未命名的变量参数。不定长参数实例如下:
def printinfo( arg1, *vartuple ):
“打印任何传入的参数”
print "输出: "
print arg1
for var in vartuple:
print var
return;

printinfo( 10 );
printinfo( 70, 60, 50 );

python 使用 lambda 来创建匿名函数。
lambda只是一个表达式,函数体比def简单很多。
lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率
lambda函数的语法只包含一个语句,如下:

lambda [arg1 [,arg2,…argn]]:expression

sum = lambda arg1, arg2: arg1 + arg2;
print "相加后的值为 : ", sum( 10, 20 )
print "相加后的值为 : ", sum( 20, 20 )

当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。
搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块 support.py,需要把命令放在脚本的顶端:
import support
support.print_func(“Runoob”)
一个模块只会被导入一次,不管你执行了多少次import。

当你导入一个模块,Python 解析器对模块位置的搜索顺序是:
1、当前目录
2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。

读取键盘输入
raw_input([prompt]) 函数从标准输入读取一个行,并返回一个字符串(去掉结尾的换行符)
str = raw_input(“请输入:”)
print "你输入的内容是: ", str

input([prompt]) 函数和 raw_input([prompt]) 函数基本类似,但是 input 可以接收一个Python表达式作为输入,并将运算结果返回。
str = input(“请输入:”)
print "你输入的内容是: ", str

open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写
file object = open(file_name [, access_mode][, buffering])
File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。
write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
write()方法不会在字符串的结尾添加换行符(’\n’):
fileObject.write(string)

read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
语法:fileObject.read([count])

seek(offset [,from])方法改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。
fo = open(“foo.txt”, “r+”)
str = fo.read(10)
print "读取的字符串是 : ", str

position = fo.tell()
print "当前文件位置 : ", position

position = fo.seek(0, 0)
str = fo.read(10)
print "重新读取字符串 : ", str
fo.close()

rename()方法需要两个参数,当前的文件名和新文件名。
os.rename(current_file_name, new_file_name)

可以用remove()方法删除文件,需要提供要删除的文件名作为参数。
os.remove(file_name)

可以使用os模块的mkdir()方法在当前目录下创建新的目录们。你需要提供一个包含了要创建的目录名称的参数。
os.mkdir(“newdir”)

可以用chdir()方法来改变当前的目录。chdir()方法需要的一个参数是你想设成当前目录的目录名称。
os.chdir(“newdir”)

getcwd()方法显示当前的工作目录
os.getcwd()

rmdir()方法删除目录,目录名称以参数传递。
os.rmdir(‘dirname’)

猜你喜欢

转载自blog.csdn.net/zhanglinlove/article/details/84202861