PYTHON | Python学习笔记(Python简介——Python基础)

PYTHON | Python学习笔记(Python简介——Python基础)教程:Python教程-廖雪峰的官方网站Python简介Python是著名的“龟叔”GuidovanRossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。Python是一种相当高级的语言。代码少的代价是运行速度慢。用Python可以做什么?可以做日常任务,比如自动备份你的MP3;可以做网站,很多著名的网站包括YouTube就是Python写的;可以做网络…

原教程是廖雪峰的:Python教程-廖雪峰的官方网站


Python简介

  • Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。
  • Python是一种相当高级的语言。
  • 代码少的代价是运行速度慢。
  • 用Python可以做什么?可以做日常任务,比如自动备份你的MP3;可以做网站,很多著名的网站包括YouTube就是Python写的;可以做网络游戏的后台,很多在线游戏的后台都是Python开发的。总之就是能干很多很多事啦。
  • Python当然也有不能干的事情,比如写操作系统,这个只能用C语言写;写手机应用,只能用Swift/Objective-C(针对iPhone)和Java(针对Android);写3D游戏,最好用C或C++。
  • Python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。
  • 第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。
  • 第二个缺点就是代码不能加密。如果要发布你的Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows上常见的xxx.exe文件)发布出去。要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。

第一个Python程序

命令行模式提示符类似C:\>

Python交互模式提示符是>>>

输入exit()并回车退出Python交互模式

在Python交互式模式下,可以直接输入代码,然后执行,并立刻得到结果。

在命令行模式下,可以直接运行.py文件。


使用文本编辑器

直接输入python进入交互模式,相当于启动了Python解释器,但是等待你一行一行地输入源代码,每输入一行就执行一行。

直接运行.py文件相当于启动了Python解释器,然后一次性把.py文件的源代码给执行了,你是没有机会以交互的方式输入源代码的。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

print('Hello, world')

输入和输出

print()会依次打印每个字符串,遇到逗号“,”会输出一个空格

name = input()
name = input('please enter your name: ')
print('hello,', name)

Python基础

以#开头的语句是注释
当语句以冒号:结尾时,缩进的语句视为代码块。

# print absolute value of an integer:
a = 100
if a >= 0:
    print(a)
else:
    print(-a)

当你重构代码时,粘贴过去的代码必须重新检查缩进是否正确。
Python程序是大小写敏感的
坚持使用4个空格的缩进
在文本编辑器中,需要设置把Tab自动转换为4个空格,确保不混用Tab和空格。


数据类型和变量

如果字符串内部既包含’又包含”怎么办?可以用转义字符\来标识,比如:

'I\'m \"OK\"!'

Python还允许用r''表示''内部的字符串默认不转义

>>> print(r'\\\t\\')
\\\t\\

Python允许用'''...'''的格式表示多行内容

>>> print('''line1
... line2
... line3''')
line1
line2
line3

如果写成程序并存为.py文件,就是:

print('''line1
line2
line3''')

可以直接用TrueFalse表示布尔值(请注意大小写)
布尔值可以用andornot运算。

空值用None表示

这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言

可以把一个变量a赋值给另一个变量b,这个操作实际上是把变量b指向变量a所指向的数据

在Python中,通常用全部大写的变量名表示常量

在Python中,有两种除法,一种除法是/:

>>> 10 / 3
3.3333333333333335

/除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数:

>>> 9 / 3
3.0

还有一种除法是//,称为地板除,两个整数的除法仍然是整数:

>>> 10 // 3
3

Python的整数没有大小限制.
Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf(无限大)。


字符串和编码

在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件
在这里插入图片描述

在这里插入图片描述
对于单个字符的编码,Python提供了ord()函数获取字符的整数表示,chr()函数把编码转换为对应的字符:

>>> ord('A')
65
>>> ord('中')
20013
>>> chr(66)
'B'
>>> chr(25991)
'文'

要注意区分’ABC’和b’ABC’,前者是str,后者虽然内容显示得和前者一样,但bytes的每个字符都只占用一个字节。

以Unicode表示的str通过encode()方法可以编码为指定的bytes

反过来,如果我们从网络或磁盘上读取了字节流,那么读到的数据就是bytes。要把bytes变为str,就需要用decode()方法

如果bytes中只有一小部分无效的字节,可以传入errors='ignore'忽略错误的字节:

>>> b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore')
'中'

len()函数计算的是str的字符数,如果换成bytes,len()函数就计算字节数

>>> 'Hello, %s' % 'world'
'Hello, world'
>>> 'Hi, %s, you have $%d.' % ('Michael', 1000000)
'Hi, Michael, you have $1000000.'

用%%来表示一个%


使用list和tuple

如果要取最后一个元素,除了计算索引位置外,还可以用-1做索引,直接获取最后一个元素(真是太骚了:

>>> classmates[-1]
'Tracy'

以此类推,可以获取倒数第2个、倒数第3个:

>>> classmates[-2]
'Bob'
>>> classmates[-3]
'Michael'
>>> classmates.append('Adam')
>>> classmates.insert(1, 'Jack')
>>> classmates.pop(1)

插播一句,c++中vector的删除:vec.erase(vec.begin() + 1); 尾部加入:vec.push_back(6);

list里面的元素的数据类型也可以不同,比如:

>>> L = ['Apple', 123, True]

另一种有序列表叫元组:tuple。tuple和list非常类似,但是tuple一旦初始化就不能修改,比如同样是列出同学的名字:

>>> classmates = ('Michael', 'Bob', 'Tracy')

现在,classmates这个tuple不能变了,它也没有append(),insert()这样的方法。其他获取元素的方法和list是一样的,你可以正常地使用classmates[0],classmates[-1],但不能赋值成另外的元素。

只有1个元素的tuple定义时必须加一个逗号,,来消除歧义:

>>> t = (1,)
>>> t
(1,)

tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向’a’,就不能改成指向’b’,指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!


条件判断

if <条件判断1>:
    <执行1>
elif <条件判断2>:
    <执行2>
elif <条件判断3>:
    <执行3>
else:
    <执行4>

input()返回的数据类型是str


循环

names = ['Michael', 'Bob', 'Tracy']
for name in names:
    print(name)

range()函数,可以生成一个整数序列,再通过list()函数可以转换为list。比如range(5)生成的序列是从0开始小于5的整数:

>>> list(range(5))
[0, 1, 2, 3, 4]

使用dict和set

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}

如果key不存在,dict就会报错
要避免key不存在的错误,有两种办法,一是通过in判断key是否存在:

>>> 'Thomas' in d
False

二是通过dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:

>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1

注意:返回None的时候Python的交互环境不显示结果。

要删除一个key,用pop(key)方法,对应的value也会从dict中删除
请务必注意,dict内部存放的顺序和key放入的顺序是没有关系的
dict的key必须是不可变对象。

set和dict的唯一区别仅在于没有存储对应的value

>>> s = set([1, 2, 3])
>>> s
{1, 2, 3}

显示的顺序也不表示set是有序的。。
重复元素在set中自动被过滤
通过add(key)方法可以添加元素到set中
通过remove(key)方法可以删除元素

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/37311.html

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注