Python初学基础

初入坑Python,打算跟着沫凡小哥的学习视频打个基础,此篇文章做一些简单的学习记录,加油加油加油啦

沫凡小哥的学习网站:https://morvanzhou.github.io/tutorials/python-basic/basic/

安装

1.1 安装

Python下载网站:https://www.python.org/downloads/(注意环境变量的配置)

基本使用

2.1 print功能 与之前所学习的语言等的功能类似

敲完满屏的print后,百度了一下IDLE的清屏指令,贴出找到的清屏方法供参考:

(1)ctrl+F6是restart

(2)下载或右击另存为clearwindow.py,保存在Python X\Lib\idlelib目录下,并找到config-extensions.def以记事本打开,在最后加上

ClearWindow]
enable=1
enable_editor=0
enable_shell=1
[ClearWindow_cfgBindings]
clear-window=<Control-Key-l>

2.2 基础数学运算

基本的加减乘除、取余取整运算等,注意与matlab中幂^的不同,python中的幂为**

2.3 变量variable

while和for循环

3.1 while循环

基本使用(注意冒号):

while condition:
         expressions

python中除了常规比较操作会返回True和False值,其他也会返回True和False

(1)数字

数字和浮点数也能进行Boolean操作,若该值等于0或0.0返回False

(2)None类型

若while后面跟的语句类型为None,返回False

(3)集合类型

python中集合类型有list、tuple、dict和set等,若把该集合对象作为while判断语句,如果集合中的元素数量为0,那么将会返回False

3.2 for循环

基本使用:

for item in sequence:
     expressions

sequence为可迭代的对象,item为序列中的每个对象。

range使用

在Python内置了工厂函数,range 函数将会返回一个序列,总共有三种使用方法

1.range(start, stop)

其中 start 将会是序列的起始值,stop为结束值,但是不包括该值,类似数学中的表达 [start, stop),左边为闭区间,右边为开区间。

2.range(stop)

如果省略了 start 那么将从 0 开始,相当于 range(0, stop)

3.range(start, stop, step)

step 代表的为步长,即相隔的两个值得差值。从 start 开始,依次增加 step 的值,直至等于或者大于 stop

关于此节课程下的高级主题

4.1 内置集合

Python共内置了 list、 tuple 、dict 和 set四种基本集合,每个集合对象都能够迭代。

tuple 类型

tup=(‘python‘,2.7,64)

for i in tup:

print(i)

程序将以此按行输出 ‘python’, 2.7 和 64。

dictionary 类型

dic={}

dic[‘lan‘]=‘python‘

dic[‘version‘]=2.7

for key in dic:

print(key,dic[key])

字典在迭代的过程中将 key作为可迭代的对象返回。注意字典中key是乱序的,也就是说和插入的顺序是不一致的。如果想要使用顺序一致的字典,请使用collections模块中的OrderedDict对象。

set 类型

s=set([‘python‘,‘python2‘,‘python3‘,‘python‘])

for i in s:

print(i)

set 集合将会去除重复项,注意输出的 结果也不是按照输入的顺序。

4.2 迭代器

python 中的 for 句法实际上实现了设计模式中的迭代器模式 ,所以我们自己也可以按照迭代器的要求自己生成迭代器对象,以便在 for 语句中使用。 只要类中实现了 __iter__ 和 next函数,那么对象就可以在 for 语句中使用。现在创建 Fibonacci 迭代器对象,

4.3 生成器

除了使用迭代器以外,Python 使用 yield 关键字也能实现类似迭代的效果,yield 语句每次执行时,立即返回结果给上层调用者,而当前的状态仍然保留,以便迭代器下一次循环调用。这样做的好处是在于节约硬件资源,在需要的时候才会执行,并且每次只执行一次。

if判断

4.1 if判断

基本使用:

if condition:
    expressions

注意python中赋值语句同matlab,使用==表示。

4.2 if else判断

基本使用:

if condition:
    true_expressions
else:
    false_expressions

注意python中无类似condition ? value1 : value2 的三目操作符,但可以通过if-else来完成类似功能。var = var1 if condition else var2

4.3 if elif else判断

if condition1:
    true1_expressions
elif condition2:
    true2_expressions
elif condtion3:
    true3_expressions
elif ...
    ...
else:
    else_expressions

定义功能

5.1 def函数

基本使用:

def function_name(parameters):
    expressions

Python 使用 def 开始函数定义,紧接着是函数名,括号内部为函数的参数,内部为函数的具体功能实现代码,如果想要函数有返回值, 在 expressions 中的逻辑代码中用 return 返回。

5.2 函数参数

基本使用:

def function_name(parameters):
    expressions

注意:在调用函数时候,参数个数和位置一定要按照函数定义。如果我们忘记了函数的参数的位置,只知道各个参数的名字,可以在 函数调用的过程中给指明特定的参数 func(a=1, b=2), 这样的话,参数的位置将不受影响,所以 func(b=2,a=1)是同样的效果。

5.3 函数默认参数

定义函数时有时候有些参数在大部分情况下是相同的,只不过为了提高函数的适用性,提供了一些备选的参数, 为了方便函数调用,可将这些参数设置为默认参数,那么该参数在函数调用过程中可以不需要明确给出。

def function_name(para_1,...,para_n=defau_n,..., para_m=defau_m):
    expressions

函数声明只需要在需要默认参数的地方用 = 号给定即可, 但是要注意所有的默认参数都不能出现在非默认参数的前面。

此节课程下的进阶篇

3.1 自调用

如果想要在执行脚本的时候执行一些代码,比如单元测试,可以在脚本最后加上单元测试代码,但是该脚本作为一个模块对外提供功能的时候单元测试代码也会执行,这些往往我们不想要的,我们可以把这些代码放入脚本最后:

if __name__ == ‘__main__‘:
    #code_here

如果执行该脚本的时候,该if判断语句将会是True,那么内部的代码将会执行。 如果外部调用该脚本,if判断语句则为False,内部代码将不会执行。

3.2 可变参数

顾名思义,函数的可变参数是传入的参数可以变化的,1个,2个到任意个。当然可以将这些参数封装成一个 list 或者 tuple 传入,但不够 pythonic。使用边长参数可以很好解决该问题,注意可变参数在函数定义不能出现在特定参数和默认参数前面,因为可变参数会吞噬掉这些参数。

def report(name, *grades):
    total_grade = 0
    for grade in grades:
        total_grade += grade
    print(name, ‘total grade is ‘, total_grade)

定义了一个函数,传入一个参数为 name, 后面的参数 *grades 使用了 * 修饰,表明该参数是一个可变参数,这是一个可迭代的对象。该函数输入姓名和各科的成绩,输出姓名和总共成绩。所以可以这样调用函数 report(‘Mike‘, 8, 9),输出的结果为 Mike total grade is 17, 也可以这样调用 report(‘Mike‘, 8, 9, 10),输出的结果为 Mike total grade is 27

3.3 关键字参数

关键字参数可以传入0个或者任意个含参数名的参数,这些参数名在函数定义中并没有出现,这些参数在函数内部自动封装成一个字典(dict).

def portrait(name, **kw):
    print(‘name is‘, name)
    for k,v in kw.items():
        print(k, v)

定义了一个函数,传入一个参数 name, 和关键字参数 kw,使用了 ** 修饰。表明该参数是关键字参数,通常来讲关键字参数是放在函数参数列表的最后。如果调用参数 portrait(‘Mike‘, age=24, country=‘China‘, education=‘bachelor‘) 输出:

name is Mike
age 24
country China
education bachelor

通过可变参数和关键字参数,任何函数都可以用 universal_func(*args, **kw) 表达。

变量形式

6.1 全局&局部 变量

模块安装

7.1 模块安装

基于windows的numpy安装,首先到网站上下载符合你的python版本的电脑系统的numpy文件,后缀名为whl。网址:http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy

如果不确定自己的python版本,可在cmd中输入python查看。如下图所示,cp为python版本,32和64分别为符合windows32位和64位的版本。下载完成后放到Scripts所在的文件夹。我的安装路径是:D:\Program Files (x86)\Python\Scripts

为了能安装wheel文件,需要安装wheel这个包,在cmd中进入Scripts所在的位置,方法如下图所示,输入pip install wheel。

如果直接在cmd中输入pip install numpy也显示安装成功,但是有可能不带mkl,会出现一些问题,所以建议安装下载。在cmd中输入pip install numpy-1.13.1+mkl-cp36-cp36m-win_amd64.whl,如图显示安装成功。

此外,你可以通过pip uninstall numpy来卸载numpy,pip install -U  numpy来更新numpy的版本。

文件读取

8.1 读写文件1

"\n"换行命令

open读文件方式

text=‘This is my first test.\nThis is next line.\nThis is last line.‘
my_file=open(‘my file.txt‘,‘w‘)
my_file.write(text)
my_file.close()

“\t”tab对齐

8.2 读写文件2

给文件增加内容,以’a‘方式打开文件,a表示append以增加内容的形式打开。例子如下:

append_text=‘\nThis is appended file.‘  # 为这行文字提前空行 "\n"
    my_file=open(‘my file.txt‘,‘a‘)   # ‘a‘=append 以增加内容的形式打开
    my_file.write(append_text)
    my_file.close()

8.3 读写文件3

(1)读取文件内容file.read()可以读取所有的内容

file= open(‘my file.txt‘,‘r‘)

content=file.read()

print(content)

(2)按行读取file.readline()

读取的内容与适用的次数有关

(3)读取所有行file.readlines()

将把每一行的结果存储在list中,执行的结果如下图所示

class类

9.1 class 类

class 定义一个类, 后面的类别首字母推荐以大写的形式定义,可以先定义自己的属性,可跟def函数,如def add(self,x,y):,self是默认值。

class Calculator:       #首字母要大写,冒号不能缺
    name=‘Good Calculator‘  #该行为class的属性
    price=18
    def add(self,x,y):
        print(self.name)
        result = x + y
        print(result)
    def minus(self,x,y):
        result=x-y
        print(result)
    def times(self,x,y):
        print(x*y)
    def divide(self,x,y):
        print(x/y)

""""
>>> cal=Calculator()  #注意这里运行class的时候要加"()",否则调用下面函数的时候会出现错误,导致无法调用.
>>> cal.name
‘Good Calculator‘
>>> cal.price
18
>>> cal.add(10,20)
Good Calculator
30
>>> cal.minus(10,20)
-10
>>> cal.times(10,20)
200
>>> cal.divide(10,20)
0.5
>>>
""""

9.2 class 类 init 功能

完成初始化功能,运行c=Calculator(‘bad calculator‘,18,17,16,15),然后调出每个初始值的值。看如下代码。

class Calculator:
    name=‘good calculator‘
    price=18
    def __init__(self,name,price,height,width,weight):   # 注意,这里的下划线是双下划线
        self.name=name
        self.price=price
        self.h=height
        self.wi=width
        self.we=weight
""""
>>> c=Calculator(‘bad calculator‘,18,17,16,15)
>>> c.name
‘bad calculator‘
>>> c.price
18
>>> c.h
17
>>> c.wi
16
>>> c.we
15
>>>
""""

如何设置属性的默认值, 直接在def里输入即可,如下:

def __init__(self,name,price,height=10,width=14,weight=16):

input输入

10.1 input 输入

variable=input() 表示运行后,可以在屏幕中输入一个数字,该数字会赋值给自变量。input返回的类型是string类型,所以可根据需要进行类型转换,如variable=int(input())

元组、列表、字典

11.1 元组 列表

元组 tuple:以小括号或者无括号表示,是一连串有顺序的数字,list以中括号命名。

a_tuple = (12, 3, 5, 15 , 6)
another_tuple = 12, 3, 5, 15 , 6
a_list = [12, 3, 67, 7, 82]

11.2 list 列表

列表是一系列有序的数列,有一系列自带的功能, 例如:

a = [1,2,3,4,1,1,-1]
a.append(0)  # 在a的最后面追加一个0
a.insert(1,0) # 在位置1处添加0
a.remove(2) # 删除列表中第一个出现的值为2的项
print(a[0])  # 显示列表a的第0位的值
print(a[-1]) # 显示列表a的最末位的值
print(a[-3:]) # 显示列表a的倒数第3位及以后的所有项的值
print(a[0:3]) # 显示列表a的从第0位 到 第2位(第3位之前) 的所有项的值
print(a.index(2)) # 显示列表a中第一次出现的值为2的项的索引
print(a.count(-1))# 统计列表中某值出现的次数
a.sort() # 默认从小到大排序
a.sort(reverse=True) # 从大到小排序

11.3 多维列表

一个一维的List是线性的List,多维List是一个平面的List:

a = [1,2,3,4,5] # 一行五列
multi_dim_a = [[1,2,3],
               [2,3,4],
               [3,4,5]] # 三行三列
在上面定义的List中进行搜索:
print(a[1])
# 2
print(multi_dim_a[0][1])
# 2

用行数和列数来定位list中的值。这里用的是二维的列表,但可以有更多的维度。

11.4 dictionary 字典

List是有顺序地输出输入,字典的存档形式则是无需顺序的。

在字典中,有key和 value两种元素,每一个key对应一个value, key是名字, value是内容。数字和字符串都可以当做key或者value, 在同一个字典中, 并不需要所有的key或value有相同的形式。 这样说, List 可以说是一种key为有序数列的字典。

字典的value可以多样,可以是字典、函数等等。

模块

12.1 import 模块

(1)import time

print(time.localtime())  #这样就可以print 当地时间了

(2)import time as_ 下划线缩写部分可以自己定义

print(t.localtime()) # 需要加t.前缀来引出功能

(3)from time import time,localtime,只import自己想要的功能

print(localtime())

(4)from time import * 输入模块所有功能

print(localtime())

12.2 自己的模块

其他

13.1 continue & break

break用法,在循环语句中,使用 break, 当符合跳出条件时,会直接结束循环。而continue直接进入下一次循环。

13.2 try 错误处理

try:,except...as...:
try:
    file=open(‘eeee.txt‘,‘r‘)  #会报错的代码
except Exception as e:  # 将报错存储在 e 中
    print(e)
"""
[Errno 2] No such file or directory: ‘eeee.txt‘
"""

13.3 zip lambda map

zip函数接受任意多个(包括0个和1个)序列作为参数,合并后返回一个tuple列表,竖向合并。

a=[1,2,3]
b=[4,5,6]
ab=zip(a,b)
print(list(ab))  #需要加list来可视化这个功能
"""
[(1, 4), (2, 5), (3, 6)]
"""

lambda定义一个简单的函数,实现简化代码的功能

map是把函数和参数绑定在一起。

13.4 copy & deepcopy 浅复制 & 深复制

什么是id?一个对象的id值在CPython解释器里就代表它在内存中的`地址

当使用浅拷贝时,python只是拷贝了最外围的对象本身,内部的元素都只是拷贝了一个引用而已。也就是第一次列表被指定到另外的空间,而第二层列表即内部元素还是相同的内存空间。

deepcopy对外围和内部元素都进行了拷贝对象本身,而不是对象的引用。外围对象和内部元素都指定到了另外的空间。

ctrl+c 强行停止运行  crtl+[ 改变Tab结构 Alt+P上一条命令 Alt+N下一条命令

时间: 2024-10-10 14:32:20

Python初学基础的相关文章

Python初学心得体会

初学程序编程对于一个没学过程序的小白来说是一个很大的挑战! 首先分别搭建在Linux和Windows下的python环境,这里有一个小的麻烦,就是在Windows的浏览器使用jupyter时,需要在Linux中python家目录中将防火墙服务打开,否则无法打开网页(service iptables stop ,因为是临时关闭,所以每回使用都需要去关闭防火墙.作为一个新手多麻烦点还是比较好的,尤其是非计算机方面的!) python的基础语法,像for , while , if 语句,转义序列,标识

问道python之基础篇【二】python入门

问道python之基础篇[二] Python入门 1.python的工作过程 python解释器把源代码转换为字节码的中间形式,然后再把它翻译成机器使用的机器语言并运行. 2.pyc文件 2.1.什么是pyc文件 执行python代码时,如果导入了其他的.py文件,那么在执行过程中会自动生成一个与其同名的.pyc文件,该文件就是python解释器编译之后产生的字节码. ps:代码经过编译可以产生字节码:字节码通过反编译也可以得到代码. Pyc文件一般由3个部分组成: 最开始4个字节是一个Maig

老少皆宜的密大Python零基础入门

Who are we? MTech是一个由密歇根大学 工程院中 (AE/ME)的中国学生组成的的一个专注于专业知识和技能的分享和交流的俱乐部.我们创建这个俱乐部旨在促进工程专业中国学生之间技术层面的交流,搭建桥梁促进知识的分享和传播.请关注我们的微信公众号("密大MTech")和我们的网站(mtechmae.webstarts.com)了解关于我们的更多信息. What is Python? Python是一种面向对象.直译式的编程语言.它的语法简单,并包含了功能完备的库,适合解决很多

python/HTML基础

---恢复内容开始--- python/HTML基础 HTML: 超文本标记(标签)语言 (以<>扩起来的都是标签语言,放入标签里的不仅仅是文本)一套语言规则 浏览器的渲染顺序是从上到下,从左到右 不同的浏览器,对同一标签可能会有不完全相同的解释(兼容性)至今已经解决的差不多了 .html或htm   静态网页文件扩展名后缀 标签可以进行嵌套,但是不能进行交叉嵌套 HTML 不是一种编程语言,而是一种标记语言,HTML使用标记标签来描述网页 HTML结构: <html></h

Python服务器开发二:Python网络基础

Python服务器开发二:Python网络基础 网络由下往上分为物理层.数据链路层.网络层.传输层.会话层.表示层和应用层. HTTP是高层协议,而TCP/IP是个协议集,包过许多的子协议.包括:传输层的 FTP,UDP,TCP协议等,网络层的ip协议等,高层协议如HTTP,telnet协议等,HTTP是TCP/IP的一个子协议. socket是对TCP/IP协议的封装和应用(程序员层面上).也可以说,TPC/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如

问道python之基础篇【一】 认识python

问道python之基础篇[一] 认识python 1.python的简介 1.1.什么是python? Python是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年发明,第一个公开发行版发行于1991年. Python语法简洁清晰,特色之一是强制用空白符作为语句缩进. Python具有丰富和强大的库.它常被昵称为胶水语言,能够用其他语言制作的各种模块(尤其是C++)很轻松地联结在一起. 1.2.python的特点 简单,易学,免费.开源,高层语言,移植性,

Python学习基础篇第一篇——快速入门(适合初学者)

一.Python学习基础篇第一篇--(快速入门) 建议从Python2.7开始学习,Python2.7可以支持扩展大量的第三方类库,是目前比较成熟的版本 编写代码的软件推荐将python自带的IDLE和PyCharm集成IDE结合起来使用 1.1 Python命令行 Python命令行将以 >>> 开始,比如 >>>print 'Hello World!' 对于验证简单的命令可以在python自带的IDLE中完成  1.2 在Python自带的IDLE写一段小程序 在所

python 网络基础

服务器客户端模式,服务器存在唯一目的是:等待客户的请求, 一.套接字 unix套接字,AF_LOCAL,地址家族,缩写:AF,AF_LOCAL将代替AF_UNIX,很多时候两者等价 基于网络的套接字,AF_INET,AF_INET6 AF_NETLINK,无连接 python只支持AF_UNIX,AF_NETLINK,AF_INET家族 一种面向连接的:tcp协议,SOCK_STREAM 一种面向无连接的:udp协议,SOCK_DGRAM socket创建套接字,语法如下: socket(soc

Python爬虫基础之requests

一.随时随地爬取一个网页下来 怎么爬取网页?对网站开发了解的都知道,浏览器访问Url向服务器发送请求,服务器响应浏览器请求并返回一堆HTML信息,其中包括html标签,css样式,js脚本等.我们之前用的是Python标准基础库Urllib实现的, 现在我们使用Python的Requests HTTP库写个脚本开始爬取网页.Requests的口号很响亮“让HTTP服务人类“,够霸气. 二.Python Requests库的基本使用 1.GET和POST请求方式 GET请求 1 import re