Hello Python(初识Python基础)

变量和赋值

  • Python中的变量不需要声明, 直接定义即可. 会在初始化的时候决定变量的 “类型”
  • 使用 = 来进行初始化和赋值操作.
num=10         #这里不需要;结尾
name='LMJian'  #双引号和单引号都可以表示字符串,没有区别

增量赋值

num*=10        #等价于num=num*10
num+=1         #不支持++/--,所以只能写成这样

动态类型

  • 同一个变量, 可以赋值成不同的类型的值.
a=100
print(a)
#输出:100
a='hehe'
print(a)
#输出:hehe
  • 变量命名规则
    • 变量名必须是字母, 数字, 下划线. 但是不能用数字开头(规则和C语言一样).
    • 变量名大小写敏感
    • 变量命名要做到 “见名知意”

认识数字

  • Python没有int, float, 这样的关键字, 但是实际上数字的类型是区分 “int” “float” 这样的类型的. 使用内建函数 type 可以查看变量的类型.
  • Python中的数字变量(int)取值范围, 并没有限制(完全取决于你机器的内存多大)
  • Python中的浮点数(float)实际上是双精度的
a=1
print(type(a))
#输出:<type 'int'>
a=1.0
print(type(a))
#输出:<type 'float'>
  • Python中还有一种 “复数” 类型. 和数学中的 “复数” 是相同的概念
a = 10 + 5j
print(a)
#输出:(10+5j)

认识字符串

  • Python中可以使用 单引号(’), 双引号("), 三引号(’’’) 来表示字符串
a = 'hehe'
b = "hehe"
c = '''hehe'''
  • 这样的好处是如果字符串中包含了 " 这样的字符, 就不用蹩脚的进行转义.(即使同时有双引号和单引号)
a = '''I say "haha", you say 'hehe'.'''
  • 但是有些不可见字符, 仍然得进行转义, 使用 \ 进行转义. 比如换行符 \n
  • 使用索引操作符 [] 或者切片操作符 [:] 来获取子字符串(切片操作是一个前闭后开区间).
  • 字符串的索引规则是: 第一个字符索引是0, 最后一个字符索引是-1(可以理解成len-1).
name='abcd'
print(name[0])
#输出:a
print(name[-1])
#输出:d
print(name[1:3])
#输出:bc
print(name[1:-1])
#输出:bc
print(name[1:])
#输出:bcd
print(name[:2])
#输出:ab
print(name[:])
#输出:abcd
  • +用于字符串连接运算, * 用于字符串重复.
a = 'hehe'
b = 'haha'
c = a + b
print(c)
#输出:hehehaha
d = a * 4
print(d)
#输出:hehehehehehehehe
  • Python没有 “字符类型” 这样的概念. 单个字符也是字符串.
  • 用内建函数 len 获取字符串长度
a = 'hehe' 
print(len(a)) 
#输出:4
  • 格式化字符串, 可以使用 % 这样的方式进行格式化的替换.
a=100
print("a = %d" % a)
#输出:a = 100

认识布尔类型

  • Python中用True和False来表示布尔值(第一个字符大写)
  • 布尔类型的变量, 也是一种特殊的整数类型. 在和整数进行运算时, True被当做1, False被当做0.

输入输出

  • print函数将结果输出到标准输出(显示器)上.
  • input函数从标准输入中获取用户输入.
  • input返回的结果只是一个字符串,如果需要获得一个数字,需要使用int函数把字符串转换成数字
num = input('Enter num:')
>>Enter num:100
print(num + 1)#出错,字符串不能加整数1
print(int(num) + 1)
>>输出:101 

注释

  • Python中使用 # 作为单行注释. #后面的内容都是注释的内容
#注释
  • Python的多行注释:
"""
注释1
注释2
"""
  • 使用中文注释时, 要小心,直接使用可能会运行报错(Python3 目前已经没有这个问题了, Python2要注意:源代码默认只支持ASCII, 所以如果要包含中文, 需要在代码文件最开头的地方注明 # --coding: UTF-8 --)

操作符

  • Python中支持 + - * / % 这样的操作符. 并且它们的行为都和C语言一样.
  • / 是 “精确除法” .
a = 1
b = 2
print(a / b)
#输出:0.5
  • // 是 “整除”. 会对结果进行取整
a = 1
b = 2
print(a // b)
#输出:0 
  • ** 表示乘方运算
  • Python也支持标准的比较运算符. > < >= <= == != 这些运算符的表达式的结果, 是一个布尔值
  • Python也支持逻辑运算符. and or not
  • Python中, 3 < 4 < 5 等价于 3 < 4 and 4 < 5 这一点和其他大多数编程语言都不太一样.
  • 运算符之间有高低优先级的区分. 应该合理使用括号来增加代码的可读性.
  • 字符串和字符串之间也可以使用运算符进行操作, 例如前面使用 + 进行字符串连接
  • 字符串之间可以使用 == != 来判定字符串的内容是否相同
  • 字符串之间也可以比较大小. 这个大小的结果取决于字符串的 “字典序”

列表/元组/字典

  • 列表和元组类似于C语言中的数组
  • 使用 [] 来表示列表, 使用 () 来表示元组
  • 列表和元组能保存任意数量, 任意类型的Python对象
alist = [1,'hehe', 3, 4]
print(alist)
#输出:[1,'hehe', 3, 4]
atuple = (1, 'hehe', 3, 4)
print(atuple)
#输出:(1, 'hehe', 3, 4) 
  • 可以使用下标来访问里面的元素, 下标从0开始. 最后一个下标为-1
  • 可以使用[:]切片操作得到列表或元组的子集. 这个动作和字符串操作是一样的.
  • 列表和元组唯一的区别是, 列表中的元素可以修改, 但是元组中的元素不能修改.
  • 字典是Python中的映射数据类型. 存储键值对(key-value).
  • 几乎所有类型的Python对象都可以用作键. 不过一般还是数字和字符串最常用.
  • 使用 {} 表示字典.
a = { 'ip' : '127.0.0.1'} # 创建字典
print(a['ip']) # 取字典中的元素
#输出:'127.0.0.1'
a['port'] = 80 # 插入新键值对
print(a)
#输出:{'ip': '127.0.0.1', 'port': 80} 

理解引用

Python中可以用 id 这个内建函数, 查看变量的 “地址”.

a = 100
print(id(a))
#输出:24187568 
a = 200
print(id(a))
#输出:24191144
b = a
print(id(b))
#输出:24191144
b = 300
print(id(b))
#输出:25094648 
  • 给a重新赋值成200, 相当于新创建了一个200这样的对象, 然后将变量名a重新绑定到200这个对象上.
  • 将a赋值给b, 其实相当于又创建了一个变量名b, 并将b这个名字和200这个对象绑定到一起.
  • 再次修改b的值, 可以看到其实是又创建了一个300这样的对象, 将b绑定到300这个对象上.
  • 像创建的 a, b 这样的变量名, 其实只是一个对象的别名. 或者叫做变量的 “引用”

代码块及缩进

  • Python中使用缩进来表示代码块. 相当于天然从语法的角度规定了代码风格.
  • Python是独一无二的使用缩进而不是{}的

if语句

  • 如果表达式的值非0或者为布尔值True, 则执行 do_something, 否则执行下一跳语句.
if expression1:
	do_something1
elif expression2:   #elif(意思是else-if)
	do_something2
else:
	do_something3 
  • Python并不支持switch/case这样的语句

while循环

  • while循环语句和if语句语法类似. 只要表达式的值非0或者为True, 就会循环执行do_something
while expression:
	do_something
# 循环执行三次print
counter = 0
while counter < 3:
	print('loop %d' % counter)
 	counter += 1

for循环

  • Python中的for循环和传统的for循环不太一样.
  • for循环接收可迭代对象(序列或者迭代器)作为参数, 每次迭代其中的一个元素.
# 遍历字典中的所有key-value
a = {'ip':'192.168.1.1', 'port':80}
for key in a:
	print(key, a[key])
# 执行结果
>>ip 127.0.0.1
>>port 80 
  • 内建函数range能够生成一个数字组成的列表, 方便进行for循环遍历.
# for循环执行三次打印
for i in range(0, 3):
	print('loop %d' % i)
# 执行结果
>>loop 0
>>loop 1
>>loop 2 
  • range函数其实有三个参数. 前两个参数分别表示了一个前闭后开的区间. 第三个参数表示step, 每次迭代的步长
# 遍历[0, 100)区间中的偶数
for i in range(0, 100, 2):
	print(i)

break和continue

  • 使用break语句跳出当前循环
  • 使用continue语句, 回到循环顶端,判断循环条件,循环条件满足, 则执行下一次循环

pass语句

  • 有时候需要用到 空语句 这样的概念, 什么都不做. 由于没有 {} , 需要有一个专门的语句来占位, 要不缩进就混乱了.
if x % 2 == 0:
	pass
else:
	do_something 

列表解析

  • 使用for循环将生成的值放在一个列表中
# 生成 [0, 4) 的数字的平方序列
squared = [x ** 2 for x in range(4)]
print(squared)
# 执行结果
>>[0, 1, 4, 9]
  • 这个过程还可以搭配使用if语句
# 获取 [0, 8) 区间中的所有的奇数
evens = [x for x in range(0, 8) if x % 2 == 1]
print(evens)

函数

  • Python使用def来定义一个函数. 使用return来返回结果.
def Add(x, y):
	return x + y
  • Python使用()来调用函数
print(Add(1, 2))
  • Python中没有 “重载” 这样的概念. 相同名字的函数, 后面的会覆盖前面的.
  • Python支持默认参数. 函数的参数可以具备默认值(与C++相似)
  • Python解包(unpack)语法, 函数返回多个值.
def GetPoint():
	return 100, 200
x, y = GetPoint()
  • 假如我只关注y, 不想关注x, 可以使用 _ 作为占位符.
_, y = GetPoint()
  • 函数也是 “对象”. 一个函数和一个数字,字符串一样, 都可以定义 “别名” 来引用它.
def Func():
	print('aaa')
func = Func
func()
print type(func)
# 执行结果 ↓
>> aaa
>> <type 'function'> 
  • 函数既然是一个对象, 那么也可以作为另外的一个函数的参数和返回值.

文件操作

使用内建函数 open打开一个文件

handle = open(file_name, access_mode) 
  • file_name是文件的名字. 可以是一个绝对路径, 也可以是相对路径.
  • access_mode是文件的打开方式. 选项有以下几种
'r' : 只读
'w' : 只写
'a' : 追加写
't' : 按文本方式读写
'b' : 按二进制方式读写

# 以读方式打开一个文件
handle = open('./text.txt', 'r') 
  • handle是一个文件句柄, 是一个可迭代的对象. 可以直接使用for循环按行读取文件内容.
for line in handle:
	print line
  • handle使用完毕, 需要close掉. 否则会引起资源泄露.
handle.close()

模块

  • 当我们一个项目的代码量较大的时候, 需要把代码放到多个不同的.py文件中.
  • 可以通过 import 关键字, 引用其他.py文件中的代码.
  • 被引入的这个代码文件, 就称之为 “模块”.
  • 被引入的文件, 去掉.py后缀名, 就是模块名.
# add.py内容
def Add(x, y):
	return x + y

# test.py内容, 直接import模块名
import add
print(add.Add(1, 2))

# test2.py内容, 只import add模块中Add这一个名字.
from add import Add
print(Add(1, 2))

# test3.py内容, import模块名, 并且给模块名取了一个别名.
import add
a = add
print(a.Add(1, 2))
  • 模块查找的顺序, 先是查找当前目录, 然后查找Python的安装目录
import sys
print(sys.path) # 打印出了模块查找的路径

实用函数

在这里插入图片描述

发布了161 篇原创文章 · 获赞 52 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_42837885/article/details/103835517
今日推荐