前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python——基础篇

Python——基础篇

作者头像
matt
发布2022-10-25 16:06:04
4680
发布2022-10-25 16:06:04
举报
文章被收录于专栏:CSDN迁移CSDN迁移

Python——基础篇

〇、环境准备

安装配置

参考博客

注意:Python 2 和 Python 3 的区别

1.Python 2 中一个int包含32位,long包含64位;Python 3 取消了long型,int可以存储任意大小的整数。 2. Python 3 提供了对Unicode的支持,可以包含世界上任何书面语言以及很多特殊符号。 3. 若mac使用了zsh,则在~/.zshrc文件最后,增加一行:source ~/.bash_profile 4. 安装pip,curl https://bootstrap.pypa.io/get-pip.py -o {dir/filename},sudo python3 get-pip.py即可

错误合计

1. 修改python和pip的版本(Linux)

代码语言:javascript
复制
# pip/python -V来查看当前版本
# which pip/python来查看命令所在的路径,一般安装路径为/usr/lib或/usr/local/lib下
# 更改软链接前需要删除之前建立好的链接
mv /usr/bin/python /usr/bin/python.bak
ln -s /usr/bin/python3.6 /usr/bin/python

# 之后需要根据提示修改例如yum脚本第一行#!/usr/bin/python为python2

2. pip 安装、升级、卸载失败

代码语言:javascript
复制
# 设置windows下的代理
set http_proxy={proxyid:port}
set https_proxy={proxyid:port}

# 旧版本依赖多,不能清晰的删除,此时应该忽略旧版本升级
pip install --ignore-installed {kit-name}

# 查看pip安装路径,可以再输入一次pip install,即可根据提示“already satisfied”后的路径找到

3. pip安装超时

代码语言:javascript
复制
# 显示ConnectTimeoutError的WARRING时,暂时更改pip镜像源
pip install -i http://mirrors.aliyun.com/pypi/simple/ {package-name}

# 提示not a trusted or secure host导致无法找到镜像
# 源地址:http://pypi.mirrors.ustc.edu.cn/simple/;http://mirrors.aliyun.com/pypi/simple/
pip install {package-name} -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

4. 分别使用py2和py3运行pip

代码语言:javascript
复制
python2 -m pip install {package-name}
python3 -m pip install {package-name}

py -2 {file-name}.py
py -3 {file-name}.py

一、基本元素(原子)

代码语言:javascript
复制
// 对象(变量或字面值)的类型
type()

// 运算符
+     加法
-     减法
*     乘法
/     浮点数除法
//    整数除法
%     模(求余)
**    幂
divmod()  返回(商,余数)

// 基数
0b或0B代表二进制
0o或0O代表八进制
0x或0X代表十六进制

// 类型转换
int()可以接受浮点数或由数字组成的字符串,但是无法接受包含小数点或指数的字符串
>>> int(98.6)
98
>>> int('-23')
-23

// 字符串
''或""中创建字符串
交互式解释器输出的字符串为单引号包裹。双引号中可以包含单引号。
三引号用于创建多行字符串,每行的换行符及行首末的空格会保留,例如
>>> poem = '''There was a Young Lady of Norway,
... Who casually sat in a door way;
... When the door squeezed her flat,
... She exclaimed, "What of that?"
... This courageous Young Lady of Norway.'''
(1)但当我们调用print() 进行打印时,Python 会在各个参数之间自动添加空格并在结尾添加换行符;
(2)可以使用字”符串*数字“来复制字符串;
(3)偏移量[]可以使用0,-1表示最左边和最右边字符;
(4)字符串不可改变。

1. 字符串操作

  1. slice操作 分片操作对于无效偏移量的容忍程度要远大于单字符提取操作。 在分片中,小于起始位置的 偏移量会被当作 0,大于终止位置的偏移量会被当作 -1。
代码语言:javascript
复制
[start:end:step]

# 整个字符串,等价于[:]
[0:-1]
# 提取最后三个字符
[-3:]
# 反向提取字符串,等价于[::-1]
[-1::-1]
  1. split() 和 join()
代码语言:javascript
复制
# 结果为list,如果待分割的字符串中包含连续的分隔符,那么在返回的列表中会出现空串元素。
string.split(',')

# 首先指定粘合用的字符串,然后再指定需要合并的列表
string.join(_list)
  1. 大小写操作操作
代码语言:javascript
复制
# 首字母大写
capitalize()

# 所有单词开头字母大写
title()

# 全大写
upper()

# 全小写
lower()

# 所有字符大小写互换
swapcase()

# 字符串对齐操作:center(30)、ljust(30)、rjust(30)
  1. 字符串分割、替换操作
代码语言:javascript
复制
# 删除指定字符
string.strip('.')

# 参数:需要被替换的子串,用于替换的新子串,以及需要替换多少处(默认只替换第一次)。可借助正则表达式。
setup.replace('a ', 'a famous ', 100)

二、列表[]、元组()、字典{}与集合{}(分子)

1. 列表(list)和元组(tuple)

序列结构,不要求所含元素的种类相同。元组(…)可变,列表[…]不可变。

(1)列表

具有相同值的元素允许出现多次,有顺序性。 可以使用list()和split()转换为list形式。列表中包含列表可以使用双重索引。

代码语言:javascript
复制
# 1.添加元素到最后
.append()

# 2.使用extend()或+=合并列表
# append()会将list插入到一个元素中,使用+=可以避免

# 3.del为python语句,不能通过方法形式调用
del _list[offset]

# 4.删除指定元素
_list.remove('value')

# 5.使用pop()获取并删除指定位置的元素,默认为-1
_list.pop(number)

# 6.查询具有特定值的元素位置
_list.index('value')

# 7.判断值是否存在
'value' in _list

# 8.记录特定值出现的次数
_list.count('value')

# 9.重新排列元素
# 列表方法 sort() 会对原列表进行排序,改变原列表内容;
# 通用函数 sorted() 则会返回排好序的列表副本,原列表内容不变。
sorted_list = sorted(_list)
_list.sort()
_list.sort(reverse=True) # 默认升序排列,此处改为降序排列

# 10.获取长度
len(_list)

# 11.复制,无关联。列表 copy() 函数、list() 转换函数、列表分片 [:]
b = a.copy()
c = list(a)
d = a[:]

利用list构建堆栈

代码语言:javascript
复制
# FIFO,队列
append() + pop()

# FILO,栈
append() + pop(0)

(2)元组

常量列表。函数的参数是以元组形式传递的。

代码语言:javascript
复制
# 1.创建,只有一个末尾也必须加','(定义元组),如果元组数大于1,最后的','可以省略
one_tuple = 'Groucho',  # 或('Groucho')
many_tuple = 'Groucho', 'Chico', 'Harpo' # 或('Groucho', 'Chico', 'Harpo')

_list = ['Groucho', 'Chico', 'Harpo'] 
many_tuple = tuple(_list)

# 2.元组解包
a, b, c = many_tuple

tuple1 = 'abc','def'
tuple2 = '123','456'
tuple3 = 'a1','b2'
tuple1, tuple2, tuple3 = tuple2, tuple3, tuple1 # 利用元组交换值

2. 字典(dictionary/dict)

类似无序列表,通过键(key)来标识。又称关系型数组、哈希表或哈希图,{…}。

代码语言:javascript
复制
# 1.dict(),将包含双值子序列的序列转换成字典
lol = [['a', 'b'], ['c', 'd'], ['e', 'f']]. # 或los = ['ab', 'cd', 'ef']
dict(lol)

lol['new_key'] = 'new_value'

# 2.update(),将一个字典的键值对复制到另一个字典中去
dict1.update(dict2)

# 3.删除元素
del dict1['value']
dict1.clear()

# 4.判断某一个键是否存在于一个字典中
'key' in dict1  # 返回true or false

# 5.获取值
dict1.get('key')  # 不存在返回None
dict1['key']  # 不存在会报错

dict1.keys()  # 获取所有键,返回一个列表(p2)或dict_keys()键的迭代形式(p3)
dict1.values()
dict1.items()

# 6.复制,=或copy()

3. 集合(set)

无顺序性。类似舍弃了值后的字典。

代码语言:javascript
复制
# 1.去重set(),判断是否在内in

# 2.集合运算符
# 交集运算符&,结果是一个集合
# 或者通过集合函数 a.intersection(b)

# 并集:|、union()

# 差集:-、difference() 

# 异或集(仅在两个集合中出现一次,即不同的):^、symmetric_difference() 

# 子集:<=、issubset() 

# 超集:>=、issuperset()(真超集:>)

三、代码结构

  1. Python 使用空白来区分代码结构;
  2. # 表示注释,出现在文本串中,将回归普通字符 # 的角色;
  3. 一行程序的(非强制性)最大长度建议为 80 个字符,连接符 \ 放在行末;
  4. 逻辑判断
代码语言:javascript
复制
# not替代!
if {condition}:
	{expression}
elif:
	{expression}
else:
	{expression}

以下情况会被认为是False:

Type

Value

布尔

False

null 类型

None

整型

0

浮点型

0.0

空字符串

‘’

空列表

[]

空元组

()

空字典

{}

空集合

set()

  1. 循环 如果 while 循环正常结束(没有使用 break 跳出),程序将进入到可选的 else 段。
代码语言:javascript
复制
# break, continue
while {condition}:
	{expression}
else {condition}:
	{expression}

# 简洁编码
# 列表(例如 rabbits)、字符串、元组、字典、集合等都是 Python 中可迭代的对象。
strs = 'abc', 'def', 'ghi'  # 也可以是'cat'或dict1.items()
for str in strs: 
    print(str)
else {condition}:
	{expression}
  1. 并行迭代 zip() 函数在最短序列“用完”时就会停止。
代码语言:javascript
复制
for day, fruit, drink, dessert in zip(days, fruits, drinks, desserts):
	print(day, ": drink", drink, "- eat", fruit, "- enjoy", dessert)
  1. 生成自然数序列 range(start、stop、step)。而 start 的默认值为 0。唯一要求的参数值是 stop,产生的最后一个数的值是 stop 的前一个,并且 step 的默 认值是 1。
代码语言:javascript
复制
for x in range(2, -1, -1): 
	print(x)
list( range(2, -1, -1) )  # 返回的是可迭代的对象
  1. 推导式 (1)列表推导式[] 返回结果 + for循环 + 条件 [expression for item in iterable if condition]
代码语言:javascript
复制
# method 1
number_list = [str(number) for number in range(1,6)] 

# method 2
cells = [(row, col) for row in rows for col in cols] 

# method 3
vec = [[1,2,3],[4,5,6],[7,8,9]]
result = {y for x in vec for y in x}  # 返回{1,2,3,4,5,6,7,8,9}

(2)集合推导式和字典推导式把[]换成{}即可; (3)元组是没有推导式的,圆括号之间的是生成器推导式,它返回的是一个生成器对象。且一个生成器只能运行一次,列表、集合、字符串和字典都存储在内存中,但 是生成器仅在运行中产生值,不会被存下来。

  1. 函数 没有()时被当作对象处理。
代码语言:javascript
复制
# 如果函数不显式调用 return 函数,那么会默认返回 None。
# 可以在def时指定默认参数值
def {function}():
	paas  # pass表明函数没有做任何事情

# 区别None和False
def is_none(thing): 
	if thing is None:  # is操作符
		print("It's None") 
	elif thing:
		print("It's True") 
	else:
		print("It's False")

# 参数另一种写法,避免混淆位置参数
menu(entree='beef', dessert='bagel', wine='bordeaux')

# 1.星号将一组可变数量的位置参数集合成参数值的元组(位置参数收集)
# 2.使用两个星号可以将参数收集到一个字典中,参数的名字是字典的键,对应参数的值是字典的值(关键字参数收集)
# 如果你的 函数同时有限定的位置参数,那么 *args 会收集剩下的参数
def print_more(required1, required2, *args):


# 文档字符串
def print_if_true(thing, check): 
	'''
	Prints the first argument if a second argument is true. 
	The operation is:
		1. Check whether the *second* argument is true.
		2. If it is, print the *first* argument. 
	'''
	if check:
    	print(thing)
# 打印输出一个函数的文档字符串
help(print_if_true)
# 只打印文档字符串
print(print_if_true.__doc__)


# 闭包(内部函数,一个被动态创建的可以记录 外部变量的函数。)
# 由另一个函数动态生成的函数,并且可以改变和存储函数外创建的变量的值。

# 匿名函数:lambda()函数
  1. 生成器 生成器是用来创建 Python 序列的一个对象。 每次迭代生成器时,它会记录上一次调用的位置,并且返回下一个值。 生成器函数,用yield来返回值而不是return。
  2. 装饰器 有时你需要在不改变源代码的情况下修改已经存在的函数。 装饰器实质上是一个函数。它把一个函数作为输入并且返回另外一个函数。 靠近函数定义(def 上面)的装饰器最先执行。
代码语言:javascript
复制
>>> def document_it(func):
... 	def new_function(*args, **kwargs):
... 		print('Running function:', func.__name__)
... 		print('Positional arguments:', args)
... 		print('Keyword arguments:', kwargs)
... 		result = func(*args, **kwargs)
... 		print('Result:', result)
... 		return result
... 	return new_function
  1. 命名空间和作用域 global关键字可以获取全局变量。 • locals() 返回一个局部命名空间内容的字典; • globals() 返回一个全局命名空间内容的字典。
  2. 异常操作 except exceptiontype as name
代码语言:javascript
复制
short_list = [1, 2, 3] >>> position = 5
try:
	short_list[position] 
except:
		print('Need a position between 0 and', len(short_list)-1, ' but got', position)


try:
	position = int(value) print(short_list[position])
except IndexError as err: 
	print('Bad index:', position)
except Exception as other: 
	print('Something else broke:', other)


class UppercaseException(Exception):
	pass

words = ['eeenie', 'meenie', 'miny', 'MO'] >>> for word in words:
	if word.isupper():
		raise UppercaseException(word)

== 注意:以两个下划线 __ 开头和结束的名称都是 Python 的保留用法。==

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Python——基础篇
  • 〇、环境准备
    • 安装配置
      • 错误合计
        • 1. 修改python和pip的版本(Linux)
        • 2. pip 安装、升级、卸载失败
        • 3. pip安装超时
        • 4. 分别使用py2和py3运行pip
    • 一、基本元素(原子)
      • 1. 字符串操作
      • 二、列表[]、元组()、字典{}与集合{}(分子)
        • 1. 列表(list)和元组(tuple)
          • (1)列表
          • (2)元组
        • 2. 字典(dictionary/dict)
          • 3. 集合(set)
          • 三、代码结构
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档