现在写Python大多使用Pycharm,关于使用vs的教程基本没有。
就将自己学习过程做一个记录,以便参考。
一、Python基础语法
Python的基础语法我参考的是菜鸟教程https://www.runoob.com/python/python-tutorial.html
1.中文编码 (防止出现乱码)
# -*- coding: UTF-8 -*-
2.注释
(1)# 单行注释
(2)'''或""" 多行注释
3.行和缩进
Python中没有{}来表示代码段,同一代码段的缩进(空格数)必须相等。
4.多行语句
Python中可以用(\)将一行语句分成多行显示。(方便程序员阅读)
Python中也没有语句结束符(;),换行就是新一条语句。
例:
total = item_one + \
item_two + \
item_three
5.条件语句
例:
#if的条件要以(:)结尾
if expression :
suite
elif expression :
suite
else :
suite
6.循环语句
例:
#论:的重要性
while:
#或
for:
#更具体的例子,和PHP中的foreach有点像
for letter in 'Python':
print '当前字母 :', letter
fruits = ['banana', 'apple', 'mango']
for fruit in fruits:
print '当前水果 :', fruit
for index in range(len(fruits)): #range返回一个序列的数
print '当前水果 :', fruits[index]
7.数据类型
Python的数据类型有5种:Numbers(数字)、String(字符串)、List(列表)、Tuple(元组)、Dictionary(字典)
- Numbers(数字):
数字数据类型用于存储数值。
例:
var1 = 1 #var1是变量名,创建新对象的时候不需要和c语言一样声明类型(这一点和PHP很像)
使用del语句删除一些对象的引用。
例:
del var_a, var_b #var_a,var_b是变量名
Python支持四种不同的数字类型:int(有符号整型)、long(长整型[也可以代表八进制和十六进制])、float(浮点型)、complex(复数)
复数由实数部分和虚数部分构成,可以用 a + bj,或者 complex(a,b) 表示, 复数的实部 a 和虚部 b 都是浮点型。math模块用于数学运算,cmath模块用于复数运算。需要写import math/import cmath.
字符串格式化:
#和C语言的printf很像
print "My name is %s and weight is %d kg!" % ('Zara', 21) #My name is Zara and weight is 21 kg!
例:
- String(字符串)
s = "a1a2···an"(n>=0) #同样不用声明类型
python的字串列表有2种取值顺序:
- 从左到右索引默认0开始的,最大范围是字符串长度少1
- 从右到左索引默认-1开始的,最大范围是字符串开头
如果要实现从字符串中获取一段子字符串的话,可以使用 [头下标:尾下标] 来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾。
[头下标:尾下标] 获取的子字符串包含头下标的字符,但不包含尾下标的字符。
例:
s = 'abcdef'
print s[1:5] #输出'bcde'
加号(+)是字符串连接运算符,星号(*)是重复操作。
- List(列表)
List和数组有点像。
例:
list = [ 'runoob', 786 , 2.23, 'john', 70.2 ]
tinylist = [123, 'john']
print list # ['runoob', 786, 2.23, 'john', 70.2]
print list[0] # runoob
print list[1:3] #[786, 2.23]
print list[2:] # [2.23, 'john', 70.2]
print tinylist * 2 # [123, 'john', 123, 'john']
print list + tinylist ['runoob', 786, 2.23, 'john', 70.2, 123, 'john']
+ 组合,* 重复,len 求长度,for 迭代,in 判断是否存在。
列表函数 cmp 比较,len 长度,max 最大值,min 最小值,list 元素转换为列表。
列表方法 append 添加,count 出现次数,extend 拓展。
- Tuple(元组)
Tuple和List有点像
例:
tuple = ( 'runoob', 786 , 2.23, 'john', 70.2 )
tinytuple = (123, 'john')
print tuple # ('runoob', 786, 2.23, 'john', 70.2)
print tuple[0] # runoob
print tuple[1:3] # (786, 2.23)
print tuple[2:] # (2.23, 'john', 70.2)
print tinytuple * 2 # (123, 'john', 123, 'john')
print tuple + tinytuple # ('runoob', 786, 2.23, 'john', 70.2, 123, 'john')
元组和列表最大的区别是不能二次赋值,相当于只读列表。
例:
print 'abc', -4.24e93, 18+6.6j, 'xyz' #abc -4.24e+93 (18+6.6j) xyz
x, y = 1, 2
#print用 , 连接字符串输出
print "Value of x , y : ", x,y #Value of x , y : 1 2
- Dictionary(字典)
Dictionary和PHP的数组有点像,都是通过索引存取。同时也和List有点像。
列表是有序的对象集合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典用"{ }"标识。字典由索引(key)和它对应的值value组成。
索引不可以重复,不可以是列表
例:
dict = {}
dict['one'] = "This is one"
dict[2] = "This is two"
tinydict = {'name': 'john','code':6734, 'dept': 'sales'}
print dict['one'] # This is one
print dict[2] # This is two
print tinydict # {'dept': 'sales', 'code': 6734, 'name': 'john'}
print tinydict.keys() # ['dept', 'code', 'name']
print tinydict.values() # ['sales', 6734, 'john']
8.运算符
算术运算符:+、-、*、/、%、**(幂)、//(取整除)
比较运算符:==、!=、<>、>、<、>=、<=
赋值运算符:=、+=、-=、*=、/=、%=、**=、//=
位运算符:&、|、^(异或)、~、<<(左移)、>>(右移)
逻辑运算符:and、or、not
成员运算符:引用对象是不是同一个成员运算符:引用对象是不是同一个
9.时间和日期
例:
ticks = time.time()
print "当前时间戳为:", ticks #当前时间戳为: 1459994552.51
#获取当前时间
localtime = time.localtime(time.time())
print "本地时间为 :", localtime
#获取格式化时间
localtime = time.asctime( time.localtime(time.time()) )
print "本地时间为 :", localtime
10.函数
- 定义函数(不需要定义返回类型)
例:
def functionname( parameters ):
"函数_文档字符串"#相当于注释
function_suite
return [expression]
- 函数调用
和c语言一样。
例:
# 定义函数
def printme( str ):
"打印任何传入的字符串"
print str;
return;
# 调用函数
printme("我要调用用户自定义函数!");
printme("再次调用同一函数");
- 参数传递
我感觉和c语言一样。
- 参数
下面是比较特别的几中参数类型
关键字参数(关键字参数顺序不重要)
例:
def printinfo( name, age ):
"打印任何传入的字符串"
print "Name: ", name;
print "Age ", age;
return;
#调用printinfo函数
printinfo( age=50, name="miki" );
#结果
#Name: miki
#Age 50
默认参数(我觉得和PHP有点像)
例:
def printinfo( name, age = 35 ):
"打印任何传入的字符串"
print "Name: ", name;
print "Age ", age;
return;
#调用printinfo函数
printinfo( age=50, name="miki" );
printinfo( name="miki" );
#输出
#Name: miki
#Age 50
#Name: miki
#Age 35
不定长参数
加了星号(*)的变量名会存放所有未命名的变量参数。
例:
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print "输出: "
print arg1
for var in vartuple:
print var
return;
# 调用printinfo 函数
printinfo( 10 );
printinfo( 70, 60, 50 );
#输出:
#10
#输出:
#70
#60
#50
- 匿名函数
匿名函数只有一行,只包含一个语句
例:
lambda [arg1 [,arg2,.....argn]]:expression
例:
sum = lambda arg1, arg2: arg1 + arg2;
# 调用sum函数
print "相加后的值为 : ", sum( 10, 20 ) #相加后的值为 : 30
print "相加后的值为 : ", sum( 20, 20 ) #相加后的值为 : 40
11.模块
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
- 模块的引入(和java引入包有点像)
例:
# import语句
import support
# 现在可以调用模块里包含的函数了
support.print_func("Runoob")
例:
#导入模块 fib 的 fibonacci 函数,使用如下语句:
from fib import Fibonacci
#把一个模块的所有内容全都导入到当前的命名空间,使用如下语句:
from math import *
12.全局变量
Python中变量默认局部变量,想要成为全局变量需要 global 声明
例:
Money = 2000
def AddMoney():
# 加上注释会报错(Money未初始化)
# global Money
Money = Money + 1
print Money
AddMoney()
print Money
13.特殊函数
(1)dir()函数
dir() 函数一个排好序的字符串列表,内容是一个模块里定义过的名字。返回的列表容纳了在一个模块里定义的所有模块,变量和函数。
(2)globals() 和 locals() 函数
在函数内部调用 locals(),返回的是所有能在该函数里访问的命名。
在函数内部调用 globals(),返回的是所有在该函数里能访问的全局名字。
两个函数的返回类型都是字典。名字可以用 keys() 函数摘取。
(3)reload() 函数
该函数会重新导入之前导入过的模块。
14.I/O函数
(1)打印到屏幕
例:
#用","隔开表达式
print "Python 是一个非常棒的语言,不是吗?"
(2)读入键盘输
raw_input和input
例:
#raw_input([prompt]) 函数从标准输入读取一个行,并返回一个字符串
str = raw_input("请输入:")
print "你输入的内容是: ", str
##输出
#请输入:Hello Python!
#你输入的内容是: Hello Python!
#input 可以接收一个Python表达式作为输入,并将运算结果返回
str = input("请输入:")
print "你输入的内容是: ", str
##输出
#请输入:[x*5 for x in range(2,10,2)]
#你输入的内容是: [10, 20, 30, 40]
(3)文件操作
例:
#file_name:文件名,access_mode:打开文件的模式,buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
#打开文件
file object = open(file_name [,access_mode][,buffering])
#写文件
fo.write( "www.runoob.com!\nVery good site!\n")
#读文件
str = fo.read(10)
print "读取的字符串是 : ", str
#关闭文件
fo.close()
其他的操作不都写出来了。