1、python是什么?

python是动态解释型的强类型定义语言。

python官方版本的解释器是CPython。该解释器使用C语言开发。

当前主要使用3.x版本的python。

2、第一个python程序

>>> print("Hello World!")

Hello World!

Linux下使用./xxx.py执行python执行python程序,在文件开头添加如下代码:

#!/usr/bin/env python

3、字符编码

英文编码系统:ASCII,可以表示255个字符

中文编码系统:GB2312(1980,7445个字符)-->GBK1.0(1995,21886个字符,中文Windows默认编码)-->GB18030(2000)

Unicode:万国码,世界统一的一种编码系统

UTF-8:Unicode的子集,对Unicode进行优化

python 3.x版本的默认编码是UTF-8。如需要定义程序文件的编码在开头添加# -*- coding: 字符编码 -*-语句。

e.g:

#-*- coding: utf-8 -*-

4、变量

a = 1

#声明一个变量,变量名a,值为1

定义变量的规则:

变量名只能是 字母、数字或下划线的任意组合

变量名的第一个字符不能是数字

以下关键字不能声明为变量名:

['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

变量名最好能让人明了该变量是用来做什么的

5、程序中的注释

# 单行注释 '''多行注释''' or """多行注释"""

6、用户交互

input用来接收用户的输入

e.g:

>>> a = input("请输入:")

请输入:123

>>> print(a)123

注意:input默认的数据类型为字符型,使用int()可以将其转换为整型

使用type()可以查看变量的数据类型,e.g:

>>> a = "abc"

>>> print(type(a))

输出小技巧:格式化输出

e.g:

name = "Python"age= 28

print("Name is %s,Age is %s"%(name,age)) #%s字符串 %d 整数 %f 浮点

print("Name is {_name},Age is {_age}".format(_name=name,_age=age))#结果

Name is Python,Age is 28Nameis Python,Age is 28

小技巧:密文输入

需导入getpass模块,使输入的内容不可见

e.g:

>>> getpass.getpass("请输入密码:")

请输入密码:#看不见我看不见我

'assdfghh'

7、if…else语句

if 条件: #如果

代码块else: #否则

代码块

if 条件: #如果

代码块elif 条件: #或者

代码块else: #否则

代码块

8、while循环

while条件:

代码块

#continue 跳出本次循环,进入下次循环

#break 结束整个循环

python中while可以搭配else使用,e.g:

a = 5

while a<6:if a/2 == 1:breaka+= 1

else:print("我就是else!")#结果

我就是else!

9、for循环

e.g:

for i in range(3):print(i)

i+= 1

#结果

0

1

2

for i in range(1,3):print(i)

i+= 1

#结果

1

2

for i in range(1,5,2):print(i)

i+= 1

#结果

1

3

for循环中也有continue和break方法

10、python中的模块

Python有非常丰富和强大的标准库和第三方库

import 模块

#程序开头加上该代码,加载某个模块,接下去就可以使用该模块提供的功能

11、python数据类型

数字:int(整型)、float(浮点)、complex(复数)

布尔值:True 、False

字符串:”Python”

12、python数据运算

算术运算

比较运算

赋值运算

按位运算

逻辑运算

成员运算

身份运算

运算优先级

三元运算

e.g:

name = "Python"

if 1>0:

name= "Python"

else:

name= "JAVA"

print(name)#结果

Python

name= "Python"

if 1 ==0:

name= "Python"

else:

name= "JAVA"

print(name)#结果

JAVA

13、列表

列表是有序的,依靠下标来取值。

>>> name = ["Python","JAVA","C++"]#定义一个列表

>>>name[0]'Python'

>>> name[1]'JAVA'

>>> name[-1]'C++'

>>> name[-2]'JAVA'

#通过列表的下标来取值,下标从0开始,负数下标从列表的最后一个开始计算,从-1开始

切片

>>> name = ["Python","JAVA","C++","C","C#"]>>> name[0:2]

['Python', 'JAVA']#列表的切片,从下标0取到下标1(结束的位置不包括)

>>> name[:2]

['Python', 'JAVA']#下标为0时可以不写

#注意负数下标

>>> name[-3:]

['C++', 'C', 'C#']>>> name[-3:-1]

['C++', 'C']#使用负数下标切片时,仍然从右到左计算,下标-1不写时,取到-1下标的值,写的时候则不包括-1下标的值

>>> name[0:-1:2]

['Python', 'C++']>>> name[::2]

['Python', 'C++', 'C#']#同上的负数下标,注意区别,第三个值为步长

追加

>>> name.append("Perl")>>>name

['Python', 'JAVA', 'C++', 'C', 'C#', 'Perl']

插入新值

>>> name.insert(2,"Ruby")>>>name

['Python', 'JAVA', 'Ruby', 'C++', 'C', 'C#', 'Perl']>>> name.insert(-1,"Lisp")>>>name

['Python', 'JAVA', 'Ruby', 'C++', 'C', 'C#', 'Lisp', 'Perl']#将新值插入某个值之前

修改

>>> name[2] = "PHP"

>>>name

['Python', 'JAVA', 'PHP', 'C++', 'C', 'C#', 'Lisp', 'Perl']

删除

>>> name.remove("PHP")>>>name

['Python', 'JAVA', 'C++', 'C', 'C#', 'Lisp', 'Perl']>>> del name[5]>>>name

['Python', 'JAVA', 'C++', 'C', 'C#', 'Perl']>>>name.pop()'Perl'

>>>name

['Python', 'JAVA', 'C++', 'C', 'C#']>>> name.pop(3)'C'

#pop不加下标时默认删除最后一个值,pop可以返回被删除的值

>>>name

['Python', 'JAVA', 'C++', 'C#']

其他的一些方法

>>> name.index("JAVA")1

#返回值的下标

>>> name.count("C++")1

#计数

>>>name

['Python', 'JAVA', 'C++', 'C#']>>>name.reverse()>>>name

['C#', 'C++', 'JAVA', 'Python']#翻转整个列表

>>>name

['Python', 'JAVA', 'C++', 'C#']>>>name.sort()>>>name

['C#', 'C++', 'JAVA', 'Python']#列表的排序

>>> a = ["a","b","c"]>>>name.extend(a)>>>name

['C#', 'C++', 'JAVA', 'Python', 'a', 'b', 'c']#合并两个列表

>>>a.clear()>>>a

[]#清除整个列表的值

>>> name_copy =name.copy()>>>name_copy

['C#', 'C++', 'JAVA', 'Python', 'a', 'b', 'c']#复制列表

列表的嵌套

>>> name = ["Python",[1,2,3],"JAVA","C++"]>>>name

['Python', [1, 2, 3], 'JAVA', 'C++']>>> name[1][2]3

列表的循环

name = ["Python","JAVA","C++"]for i inname:print(i)#结果

Python

JAVA

C++

小技巧

name = ["Python","JAVA","C++"]for index,item inenumerate(name):print(index,item)#结果

0 Python1JAVA2 C++

#同时循环列表的下标及值

14、元组

元组是不可修改的列表,也叫只读列表

>>> name = ("Python","JAVA","C++")>>>name

('Python', 'JAVA', 'C++')#创建一个元组

元组只有count与index

>>> name.count("C++")1

>>> name.index("C++")2

list(),将元组转换为一个列表

>>> a =list(name)>>>a

['Python', 'JAVA', 'C++']

小技巧,无关元组

\033[31,32;1m%s\033[0m,对%s着色

15、字符串的常用操作

字符串可以使用下标和切片操作。

.upper()/lower() #返回一个新字符串,其中原字符串的所有字母都被相应地转换为大写或小写。

.startswith()/.endswith() #返回 True, 如果它们所调用的字符串以该方法传入的字符串开始或结束。

>>> a = "a:b:c:d:e:f"

>>> a.split(":")

['a', 'b', 'c', 'd', 'e', 'f']

a.strip()#删除字符串两边的空白字符(空格、制表符和换行符)

a.rstrip() #删除字符串右边的空白字符(空格、制表符和换行符)

a.lstrip() #删除字符串左边的空白字符(空格、制表符和换行符)

>>> a = "{'a':'b','c':'d'}"

>>>type(a)

>>> b =eval(a)>>>b

{'a': 'b', 'c': 'd'}>>>type(b)

#将格式化的字符串转换成字典,同理可以转换列表跟元组

name = "Python"name.capitalize()#首字母大写

name.casefold() #大写全部变小写

name.ljust(50,"-") #输出'Python---------------------------'

name.center(50,"-") #输出 '---------------------Python----------------------'

name..rjust(50,"-") #输出'--------------------Python'

name.count('t') #统计t出现次数

name.encode() #将字符串编码成bytes格式

name.endswith("n") #判断字符串是否以n结尾

"Pyt\thon".expandtabs(10) #输出'Pyt hon', 将\t转换成多长的空格

name.find('y') #查找y,找到返回其索引, 找不到返回-1

name.index('y') #返回y所在字符串的索引

'9aA'.isalnum() #判断是否是字母和数字

'9'.isdigit() #判断是否整数

name.isnumeric #方法检测字符串是否只由数字组成。这种方法是只针对unicode对象。

name.isprintable #判断是否为可打印字符串

name.isspace #判断是否为空格

name.istitle #判断是否首字母大写,其他字母小写

name.islower()/isupper() #判断是否为小写/大写

>>> "|".join(['Python', 'JAVA', 'C++'])'Python|JAVA|C++'

>>> a = "a:b:c:d:e:f"

>>> a.partition(":")

('a', ':', 'b:c:d:e:f')

.replace(old,new,x)#将第x个字符替换

.swapcase #大小写互换

.zfill() #返回指定长度的字符串,原字符串右对齐,前面填充0

.isidentifier() #检测一段字符串可否被当作标志符,即是否符合变量命名规则

16、字典

字典:键-值(key - value),key唯一,无序

>>> a = {"福建":"福州","广东":"广州","江西":"南昌"}>>>a

{'福建': '福州', '广东': '广州', '江西': '南昌'}#创建一个字典

>>> a["广西"] = "南宁"

>>>a

{'福建': '福州', '广东': '广州', '江西': '南昌', '广西': '南宁'}#增加

>>> a["广西"] = "广西"

>>>a

{'福建': '福州', '广东': '广州', '江西': '南昌', '广西': '广西'}#修改

>>> a.pop("广西")'广西'

>>>a

{'福建': '福州', '广东': '广州', '江西': '南昌'}>>> del a["江西"]>>>a

{'福建': '福州', '广东': '广州'}#删除

>>> a = {"福建":"福州","广东":"广州","江西":"南昌"}>>>a.popitem()

('江西', '南昌')#随机删除

>>> a = {"福建":"福州","广东":"广州","江西":"南昌"}>>> "福建" ina

True#查找

>>> a.get("福建")'福州'

>>> a["福建"]'福州'

#取某个键的值,使用get方法如果键不存在则返回None,直接取键不存在则报错

>>>a.values()

dict_values(['福州', '广州', '南昌'])>>>a.keys()

dict_keys(['福建', '广东', '江西'])>>>a.items()

dict_items([('福建', '福州'), ('广东', '广州'), ('江西', '南昌')])>>> b =list(a.items())>>>b

[('福建', '福州'), ('广东', '广州'), ('江西', '南昌')]#返回值可以用于循环

>>> a.setdefault("福建")'福州'

>>> a.setdefault("福建","南宁")'福州'

>>> a.setdefault("广西","南宁")'南宁'

>>>a

{'福建': '福州', '广东': '广州', '江西': '南昌', '广西': '南宁'}#不存在则增加,存在则返回该键的值

>>>b

{1, 2, 3}>>> b = {1:2,3:4,5:6}>>>a.update(b)>>>a

{'福建': '福州', '广东': '广州', '江西': '南昌', '广西': '南宁', 1: 2, 3: 4, 5: 6}#合并两个字典

>>> a = dict.fromkeys([1,2,3],"abc")>>>a

{1: 'abc', 2: 'abc', 3: 'abc'}

a= {"福建":"福州","广东":"广州","江西":"南昌"}for i ina:print(i,a[i])#字典的循环,结果

福建 福州

广东 广州

江西 南昌

17、集合

集合是一个无序的,不重复的数据组合。作用:

去重,把列表变成集合,自动去重

关系测试,取交集、并集等关系

s = set([3,5,9,10]) #创建一个数值集合

t = set("Hello") #创建一个唯一字符的集合

t.add('x') #添加一项

s.update([10,37,42]) #添加多项

t.remove('H') #删除

len(s) #长度

s.copy()#返回 set “s”的一个浅复制

x in s #测试 x 是否是 s 的成员

x not in s #测试 x 是否不是 s 的成员

s.issubset(t)

s<=t#测试是否 s 中的每一个元素都在 t 中

s.issuperset(t)

s>=t#测试是否 t 中的每一个元素都在 s 中

s.union(t)

s|t#返回一个新的 set 包含 s 和 t 中的每一个元素

s.intersection(t)

s&t#返回一个新的 set 包含 s 和 t 中的公共元素

s.difference(t)

s-t#返回一个新的 set 包含 s 中有但是 t 中没有的元素

s.symmetric_difference(t)

s^t#返回一个新的 set 包含 s 和 t 中不重复的元素

18、文件操作

文件的常用操作

f = open("文件名","模式")#打开文件,模式有以下几种:

r 只读模式(默认)

w 只写模式(文件不存在则建立,文件存在则覆盖)

a 追加模式(文件不存在则建立,文件存在则追加)

r+读写模式(可读可写可追加)

w+ 写读模式

a+ 追加读模式

rb、wb、ab 处理二进制文件

U 将\r \n \r\n自动转换成\n(与r或r+模式同时使用)

f.read()#读文件

f.readline() #读一行

f.readlines() #将文件每一行读如一个列表

f.write()#将内容写入文件

f.close()#关闭文件

f.tell()#返回指针位置,按文件中字符的个数计算

f.seek() #回到某个指针位置

f.encoding()#返回文件所使用的编码

文件的其他一些操作

f.readable() #判断文件是否可读

f.writeable() #判断文件是否可写

f.closed() #判断文件是否关闭

f.seekable() #判断是否可以移动指针

f.name() #返回文件名

f.isatty() #如果文件连接到一个终端设备返回 True,否则返回 False

f.flush() #将缓存内容写入硬盘

f.truncate() #从头开始截断文件

for line inf:print(line)#将文件一行行读入内存,一次只在内存中保存一行

with open("文件名","模式") as f:#为防止打开文件之后忘记关闭,使用该方法在with代码块执行完毕之后自动关闭释放文件资源

with open("文件名","模式") as f1,open("文件名","模式") as f2:#支持对多个文件进行操作

19、字符的编码与转码

encode:编码 decode:转码

GBK-->UTF-8:GBK--decode-->Unicode--encode-->UTF-8

UTF-8-->GBK:UTF-8--decode-->Unicode--encode—>GBK

两个不同编码相互转换都需要经过Unicode。

.decode(原编码)

.encode(转换后编码)

python 3.x默认为UTF-8编码。

在python 3.x中encode,在转码的同时还会把string变成bytes类型,decode在解码的同时还会把bytes变回string。

20、函数

使用函数的意义:

减少重复的代码

保持一致性,使代码更容易修改

使程序更容易扩展

def函数名(形参):'''文档描述'''代码块return #返回执行结果,可返回多个值,默认返回None#定义一个函数

位置参数,关键字参数,默认参数,e.g:

deftest(x,y):print(x)print(y)returntest(1,2)#位置参数,将函数所获得的参数按照一一对应的位置传入,输出结果为

1

2

deftest(x,y):print(x)print(y)returntest(x=1,y=2)#关键字参数,按照关键字将值传入,输出结果为

1

2

deftest(x,y):print(x)print(y)returntest(1,y=2)#位置参数与关键字参数一起使用,注意:关键字参数不能放在位置参数之前,输出结果为

1

2

def test(x,y,z=3):print(x)print(y)print(z)returntest(1,y=2)#默认参数,直接在定义函数的时候赋值,可以在调用函数的时候修改,输出结果为

1

2

3

非固定参数

def test(*args):print(args)returntest(1,2)

test(1,2,3)

test(*[1,2,3,4])#非固定参数,可以传入不同个数的参数,只能接受位置参数,以元组的方式输出,结果

(1, 2)

(1, 2, 3)

(1, 2, 3, 4)def test(**args):print(args)returntest(x=1,y=2)

test(x=1,y=2,z=3)#非固定参数,以字典的方式输出,只接受关键字参数,结果

{'x': 1, 'y': 2}

{'x': 1, 'y': 2, 'z': 3}

21、作用域、局部与全局变量

在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。

全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。

当全局变量与局部变量同名时,在定义局部变量的子程序内,局部变量起作用,在其它地方全局变量起作用

22、递归与高阶函数

递归

一个函数在内部调用自身,该函数即为递归函数

特性:

必须有一个明确的结束条件

每次进入更深一层递归时,问题规模相比上次递归都应该有所减少

递归效率不高,递归层次过多会导致栈溢出

高阶函数

变量可以指向函数,函数的参数能够接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数称为高阶函数。e.g:

defadd(x,y,f):return f(x)+f(y)

res= add(3,-6,abs)print(res)#结果

9

python函数和模块有什么关键特性_Python学习----第一模块笔记(Python基础知识)...相关推荐

  1. mysql数据库python基础知识_python学习之Mysql数据库编程基础知识介绍

    在Python网络爬虫中,通常是通过TXT纯文本方式存储,其实也是可以存储在数据库中的:同时在WAMP(Windows.Apache.MySQL.PHP或Python)开发网站中,也可以通过Pytho ...

  2. 数字图像处理与Python实现笔记之基础知识

    数字图像处理与Python实现笔记之基础知识 摘要 绪论 1 数字图像处理基础知识 1.1 数字图像简介 1.1.1 数字图像处理的目的 1.1.2 数字图像处理的应用 1.1.3 数字图像处理的特点 ...

  3. python 图像分析自然纹理方向与粗细代码_数字图像处理与Python实现笔记之基础知识...

    数字图像处理与Python实现笔记之基础知识 摘要 绪论 1 数字图像处理基础知识 1.1 数字图像简介 1.1.1 数字图像处理的目的 1.1.2 数字图像处理的应用 1.1.3 数字图像处理的特点 ...

  4. python函数和模块有什么关键特性_零基础学python之函数与模块(附详细的代码和安装发布文件过程)...

    代码重用--函数与模块 摘要:构建函数,创建模块,安装发布文件,安装pytest和PEP 8插件,确认PEP8兼容性以及纠错 重用代码是构建一个可维护系统的关键. 代码组是Python中对块的叫法. ...

  5. 【Python】Python学习----第一模块笔记

    1.python是什么? python是动态解释型的强类型定义语言. python官方版本的解释器是CPython.该解释器使用C语言开发. 当前主要使用3.x版本的python. 2.第一个pyth ...

  6. python函数的作用降低编程复杂度_Python函数式编程

    lambda 本文将介绍Python中函数式编程的特性.在对函数式编程的概念有了了解后,本文会介绍iterators和generators等语言特性,还有itertools和functools等相关的 ...

  7. python用方括号提取字符中的数值_Python使用re模块正则提取字符串中括号内的内容示例...

    Python使用re模块正则提取字符串中括号内的内容示例 本文实例讲述了Python使用re模块正则提取字符串中括号内的内容操作.分享给大家供大家参考,具体如下: 直接上代码吧: # -*- codi ...

  8. python函数和代码复用思维导图_Python语言程序---代码复用与函数递归(二)

    Python语言程序---代码复用与函数递归(二) 函数递归 在函数定义中,调用函数自身的方式就是递归. 递归并不是程序设计的专有名词,在数学中也广泛存在.例如:n!.在n!中,我们定义当n=0时,n ...

  9. python程序设计实验报告实验程序流程序列化_Python使用pickle模块实现序列化功能示例...

    本文实例讲述了Python使用pickle模块实现序列化功能.分享给大家供大家参考,具体如下: Python内置的pickle模块能够将Python对象序列成字节流,也可以把字节流反序列成对象. im ...

最新文章

  1. 2021春季学期-创新设计与实践-Lesson4
  2. 软考高项之学习笔记——质量成本概念
  3. 第一次上课:特征值特征向量的几何直观
  4. 解决SpringMVC中的 Could not find acceptable represent
  5. xlc mysql_mysql – 用于存储产品信息的noSQL?
  6. STL中的序列式容器——priority_queue(优先队列)
  7. STM32电机测速(正交或者霍尔编码器)
  8. Word 2016封面不显示页码
  9. 目标:安全纯净互联网 软件升级报38期
  10. 吴军三部曲见识(三) 谈谈见识
  11. c语言中f的作用是什么,c语言中f什么意思 c语言中f什么意思
  12. linux 回收站创建
  13. C语言核桃的数量问题
  14. 信息安全意识培训非常重要
  15. 产品经理必须会的软件——office
  16. 从头到脚说单测——谈有效的单元测试(上篇)
  17. 深度学习样本规则裁剪(图片规则裁剪)
  18. RK3288下添加PCF8563 RTC支持
  19. 【雕刻机】Grbl程序使用入门
  20. 什么是Kivy???

热门文章

  1. 小白的算法初识课堂(part9)--SHA及Simhash算法
  2. numpy基础(part15)--线性模型
  3. 《统计学》学习笔记之时间序列分析和预测
  4. HIVE入门之数据模型
  5. 数据链路层介质访问控制——信道划分、随机访问和轮询访问
  6. SAP UI5 应用开发教程之五十八 - 使用工厂方法在运行时动态创建不同类型的列表行项目控件试读版
  7. 使用 SAP Cloud SDK 连接 OData 服务
  8. 把运行在 Docker 容器内的 Microsoft SQL 服务器部署到 SAP Kyma 中
  9. SAP UI5 Web Component里最简单的React列表控件的用法
  10. SAP Odata filter的语法