Python 基础语法学习笔记一(超详细版)

huansky 2021-11-11 原文

本文将 python 基础语法总结形成学习笔记,方便日后翻看阅读。文章内容由浅入深,从变量,单引号等到列表推导式以及类的创建,涵盖 python 基础用法和语法。

1.变量

python 中变量很简单,不需要指定数据类型,直接使用等号定义就好。python变量里面存的是内存地址,也就是这个值存在内存里面的哪个地方,如果再把这个变量赋值给另一个变量,新的变量通过之前那个变量知道那个变量值的内存地址存起来,而不是指向之前的那个变量。

变量的定义规则:

  •   变量名要见名知意,不能用拼音,不能用中文

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

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

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

2.单引号,双引号和三引号(三个单引号)

python 中定义变量的时候字符串都用引号引起来,此时单引号和双引号没有区别。但是如果字符串中有单引号的话,外面就得用双引号;如果里面有双引号,外面就用单引号;如果既有单引号又有双引号,那么用三引号,三引号也可以多行注释代码,单行注释,使用#。

3.数字

  1. python 中数字类型的变量可以表示任意大的数值

  2. 十六进制一 0x 开头,八进制以 0o 开头,二进制以 0b 开头

  3. python 中可以表示复数用j来表示虚部 complex(a,b)函数可以形成复数

  4. real 查看实部 imag 查看虚部 conjugate()返回共轭复数

a=99999999999999
print(a*a)
print(math.sqrt(3**2+4**2))
a=3+4j
b=complex(5,6)
c=a+b
print(c)
print(c.real)
print(c.imag)
print(c.conjugate())

运行结果

9999999999999800000000000001
5.0
(8+10j)
8.0
10.0
(8-10j)

4.输入,输出

python 使用input函数接收用户输入,python2中使用raw_input,接收的是一个字符串;使用print输出:

input 在接收输入的时候,是可以看到你输入的值的,如果是输入密码这样的呢,不想让别人看到你的密码,怎么办呢,就需要用到一个标准库,getpass,什么是标准库呢,就是不需要你再去安装,装完 python 就有的库,就是标准库,getpass 就是一个标准库,导入进来之后,直接使用 getpass.getpass 方法就可以在输入的时候,不会显示了:

注意:pycharm 不支持 getpass 模块,在 python 模块的 ide 下可展示。

5.列表(List)

创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。

与字符串的索引一样,列表索引从0开始。列表可以进行截取、组合等。

#!/usr/bin/python
 
list1 = [\'physics\', \'chemistry\', 1997, 2000]
list2 = [1, 2, 3, 4, 5, 6, 7 ]
 
print "list1[0]: ", list1[0]
print "list2[1:5]: ", list2[1:5]

 你可以对列表的数据项进行修改或更新,你也可以使用append()方法来添加列表项,如下所示:

list = []          ## 空列表
list.append(\'Google\')   ## 使用 append() 添加元素
list.append(\'Runoob\')
print list

列表对 + 和 * 的操作符与字符串相似。+ 号用于组合列表,* 号用于重复列表。如下所示:

6.Python列表函数&方法

Python 包含以下函数:

Python 包含以下方法:

7.常用内置函数

执行这个命令可以查看所有内置函数和内置对象(两个下划线)

 >>>dir(__builtins__)
[\'__class__\', \'__contains__\', \'__delattr__\', \'__delitem__\', \'__dir__\', \'__doc__\', \'__eq__\', \'__format__\', \'__ge__\', \'__getattribute__\', 

\'__getitem__\', \'__gt__\', \'__hash__\', \'__init__\', \'__init_subclass__\', \'__iter__\', \'__le__\', \'__len__\', \'__lt__\', \'__ne__\', \'__new__\',

\'__reduce__\', \'__reduce_ex__\', \'__repr__\', \'__setattr__\', \'__setitem__\', \'__sizeof__\', \'__str__\', \'__subclasshook__\', \'clear\', \'copy\',

\'fromkeys\', \'get\', \'items\', \'keys\', \'pop\', \'popitem\', \'setdefault\', \'update\', \'values\']

 测试:

a=-2
b=[1,2,3,4,0]
c=\'a\'
print(  abs(a)  ) #返回数字的绝对值
print(  all(b)  ) #对于可迭代对象所有元素 全部非零返回true 若存在零返回false
print(  any(b)  ) #对于可迭代对象存在元素非零,则返回true
print(  bin(a)  ) #把数字转换为二进制串
print(  callable(a) ) #测试对象是否可调用,类和函数是可调用的
print(  chr(65) ) #返回ASCII编码的字符
#print(  dir(a)  ) #返回指定对象的成员列表
print(  ord(c)  ) #返回一个字符的编码
print(  str(b)  ) #把对象转化为字符串
print(  help(math.sin)) #查看指定方法的使用帮助
print(  list(b) )# 把对象转换为 列表
print(  set(b)  ) #集合
print(  tuple(b) )# 元组
#print(  dict(b) ) #字典并返回

结果:

2
False
True
-0b10
False
A
97
[1, 2, 3, 4, 0]
Help on built-in function sin in module math:
sin(…)
sin(x)
Return the sine of x (measured in radians).
None
[1, 2, 3, 4, 0]
{0, 1, 2, 3, 4}
(1, 2, 3, 4, 0)

8.对象的删除(好习惯)

x=[1,2,3,4,5]
y=3
print(y)
del y
del x[1]
print(x)
print(y)

 结果:

3
[1, 3, 4, 5]
Traceback (most recent call last):
File “.../练习.py”, line 11, in
print(y)
NameError: name ‘y’ is not defined

9.模块的导入与使用

python 中有大量第三方库可用 “pip3 install 。。。”进行有需要的安装

在使用库函数时,需要导入,有两种方法:

  • import 模块名【as 别名】:使用这种方式导入后,需要在使用的对象前加上前缀 “模块名 . 对项名”的方式进行访问,也可以用“别名 . 对象名”的方式使用其中的对象

  • from 模块名 import 对象名【as 别名】:使用这种方式仅导入使用的对象,并且可以为这个对象起一个别名,这种方法可以减少查询次数,减少程序员的代码量,不需要使用模块名作为前缀 

import math
from math import sin as f

print(math.sin(3))
print(f(3))

结果:

0.1411200080598672
0.1411200080598672

 比较极端的情况是一次导入模块中全部的对象:

from math import *

不推荐使用这中方法,一旦多个模块中有同名的对象,会导致混乱

10.条件判断:

python中条件判断使用if else 来判断,多分支使用if elif…else,也就是如果怎么怎么样就怎么怎么样,否则怎么怎么样,格式如下:

 

具体代码如下:

11.循环

python 中有两种循环,while和for,两种循环的区别是,while循环之前,先判断一次,如果满足条件的话,再循环,for循环的时候必须有一个可迭代的对象,才能循环.python中for循环很简单,循环的是一个可迭代对象中的元素,你这个对象中有多少个元素,就循环多少次,比如说一个数组list,list = [\’a\’,\’b\’,\’c\’],在别的语言中要想获取到list中所有的值,必须得使用循环取下标这种方式去取数据,就得这样写list[x],list[x],list[x]这样,在Python里面就不需要直接循环就取的是这个list里面的值,循环里面还有两个比较重要的关键字,continue和break,continue的意思是,跳出本次循环,继续进行下一次循环,break的意思是停止循环,也就是说在continue和break下面的代码都是不执行的,格式如下:

12.range()函数

python 的 range() 函数可用来创建一个整数列表,一般用在 for 循环中.

  • range()语法:range(start, stop[, step])

  • start:计数从start开始,默认是从0开始(闭区间),如:range(5)等价于range(0,5).

  • stop:计数到stop结束,但不包括stop(开区间).如:range(0,5)是[0, 1, 2, 3, 4],不包含5.

  • step:步长,相邻两个值的差值,默认为1.如:range(0,5)相当于range(0, 5, 1).

13.列表推导式

列表推导式(list comprehension)是指循环创建列表.

# 列表推导式
list_b = [b for b in range(5)]
print(list_b)

上面分别是用for循环和列表推导式创建列表的代码,list_a和list_b的结果是一样的,都是[0, 1, 2, 3, 4].

下面来看复杂点的列表推导式:

# in后面跟其他可迭代对象,如字符串
list_c = [7 * c for c in "python"]
print(list_c)
 
# 带if条件语句的列表推导式
list_d = [d for d in range(6) if d % 2 != 0]
print(list_d)
 
# 多个for循环
list_e = [(e, f * f) for e in range(3) for f in range(5, 15, 5)]
print(list_e)
 
# 嵌套列表推导式,多个并列条件
list_g = [[x for x in range(g - 3, g)] for g in range(22) if g % 3 == 0 and g != 0]
print(list_g)

运行结果:

[\'ppppppp\', \'yyyyyyy\', \'ttttttt\', \'hhhhhhh\', \'ooooooo\', \'nnnnnnn\']
[1, 3, 5]
[(0, 25), (0, 100), (1, 25), (1, 100), (2, 25), (2, 100)]
[[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11], [12, 13, 14], [15, 16, 17], [18, 19, 20]]

代码解释:

  1. 列表推导式会遍历后面的可迭代对象,然后按照for前的表达式进行运算,生成最终的列表.

  2. 如果有if条件语句,for遍历后紧跟着进行条件判断.

  3. 3.如果有多个for循环,则最终的数据数量为多个for循环的笛卡尔积.

  4. 4.可以进行嵌套的列表推导,与嵌套for循环的原理相同.

14.字典推导式

如果列表推导的概念已经为你所熟知,接受字典推导并不难.直接看代码吧:

# 因为key是唯一的,所以最后value都是1
dict_a = {key: value for key in \'python\' for value in range(2)}
print(dict_a)
 
# 可以根据键来构造值
dict_b = {key: key * key for key in range(6)}
print(dict_b)
 
# 遍历一个有键值关系的可迭代对象
list_phone = [(\'HUAWEI\', \'华为\'), (\'MI\', \'小米\'), (\'OPPO\', \'OPPO\'), (\'VIVO\', \'VIVO\')]
dict_c = {key: value for key, value in list_phone}
print(dict_c)

运行结果:

{\'p\': 1, \'y\': 1, \'t\': 1, \'h\': 1, \'o\': 1, \'n\': 1}
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
{\'HUAWEI\': \'华为\', \'MI\': \'小米\', \'OPPO\': \'OPPO\', \'VIVO\': \'VIVO\'}

15.集合推导式

同样的,直接看代码,这样可以直观的看到集合推导式

# 遍历一个可迭代对象生成集合
set_a = {value for value in \'有人云淡风轻,有人负重前行\'}
print(set_a)

运行结果:

{\'\', \'\', \'\', \'\', \'\', \'\', \'\', \',\', \'\', \'\', \'\'}

集合是无序且不重复的,所以会自动去掉重复的元素,并且每次运行显示的顺序不一样。 

16.创建类

使用 class 语句来创建一个新类,class 之后为类的名称并以冒号结尾:

class ClassName:
   \'类的帮助信息\'   #类文档字符串
   class_suite  #类体

类的帮助信息可以通过ClassName.__doc__查看。

class_suite 由类成员,方法,数据属性组成。

实例

以下是一个简单的 Python 类的例子:

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
class Employee:
   \'所有员工的基类\'
   empCount = 0
 
   def __init__(self, name, salary):
      self.name = name
      self.salary = salary
      Employee.empCount += 1
   
   def displayCount(self):
     print "Total Employee %d" % Employee.empCount
 
   def displayEmployee(self):
      print "Name : ", self.name,  ", Salary: ", self.salary
  • empCount 变量是一个类变量,它的值将在这个类的所有实例之间共享。你可以在内部类或外部类使用 Employee.empCount 访问。

  • 第一种方法__init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法

  • self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数。

self代表类的实例,而非类

类的方法与普通的函数只有一个特别的区别——它们必须有一个额外的第一个参数名称, 按照惯例它的名称是 self。

创建实例对象

实例化类其他编程语言中一般用关键字 new,但是在 Python 中并没有这个关键字,类的实例化类似函数调用方式。

以下使用类的名称 Employee 来实例化,并通过 __init__ 方法接收参数。

"创建 Employee 类的第一个对象"
emp1 = Employee("Zara", 2000)
"创建 Employee 类的第二个对象"
emp2 = Employee("Manni", 5000) 

访问属性

您可以使用点号 . 来访问对象的属性。使用如下类的名称访问类变量:

emp1.displayEmployee()
emp2.displayEmployee()
print "Total Employee %d" % Employee.empCount

执行以上代码输出结果如下:

Name :  Zara ,Salary:  2000
Name :  Manni ,Salary:  5000
Total Employee 2

你可以添加,删除,修改类的属性,如下所示:

emp1.age = 7  # 添加一个 \'age\' 属性
emp1.age = 8  # 修改 \'age\' 属性
del emp1.age  # 删除 \'age\' 属性

你也可以使用以下函数的方式来访问属性:

  • getattr(obj, name[, default]) : 访问对象的属性。

  • hasattr(obj,name) : 检查是否存在一个属性。

  • setattr(obj,name,value) : 设置一个属性。如果属性不存在,会创建一个新属性。

  • delattr(obj, name) : 删除属性。

hasattr(emp1, \'age\')    # 如果存在 \'age\' 属性返回 True。
getattr(emp1, \'age\')    # 返回 \'age\' 属性的值
setattr(emp1, \'age\', 8) # 添加属性 \'age\' 值为 8
delattr(emp1, \'age\')    # 删除属性 \'age\'

  

参考文章

python 学习笔记(超详细)(一)

python学习笔记(一)python简介和基础

 

版权声明:本文为huansky原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/huansky/p/14451733.html

Python 基础语法学习笔记一(超详细版)的更多相关文章

  1. 学习笔记:Python序列化常用工具及性能对比

    1. 闲扯一下:文件 磁盘上的数据,我们一般称为 “文件” ,一般不同的文件都有各自的后缀名,比如 .txt […]...

  2. python财经数据接口包Tushare pro的入门及简单使用方式(大数据,股票数据接口)

    最近在做一个项目,需要用到股票的数据,我在网上查了很久,最终发现在股票数据上面还是tushare比较专业,而且 […]...

  3. celery 与 flask 实现异步任务调度

        Flask 定了2中上下文,来实现机遇线程\协程的,wsgi服务的请求(request、session […]...

  4. Python 3 入门,看这篇就够了

    简介 Python 是一种高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。Python 由 Guid […]...

  5. “Python的单例模式有四种写法,你知道么?”——孔乙己

    什么是单例模式 单例模式(Singleton Pattern)是最简单的设计模式之一。这种类型的设计模式属于创 […]...

  6. Python crawler access to web pages the get requests a cookie

    Python in the process of accessing the web page,encount […]...

  7. 正则表达式

    正则表达式 一. re模块的使⽤过程 #coding=utf-8 # 导⼊re模块 import re # 使 […]...

  8. 使用selenium时提示:ImportError:No module named selenium

    问题分析: 用的是mac系统,已经通过sudo pip install -U selenium安装好了sele […]...

随机推荐

  1. 敏捷开发中如何做好Sprint规划?

    什么是Sprint规划? Sprint规划是scrum中用来启动Sprint的事件。迭代规划的目标是定义Spr […]...

  2. JDK(JDK8,JDK11)百度云下载

    JDK(JDK8,JDK11)百度云下载,方便大家学习,不用去官网下载了,速度慢,还要注册oracle帐号. […]...

  3. matlab入门1–利用plot函数绘制正弦函数图形 – SUNJUNLIN

    matlab入门1–利用plot函数绘制正弦函数图形 plot(x,y,s)s表示线条的着色和类型 […]...

  4. 使用 CompletableFuture 异步组装数据

    使用 CompletableFuture 异步组装数据 一种快捷、优雅的异步组装数据方式 实际项目中经常遇到这 […]...

  5. java第三方登录(微博,QQ)详细代码

    第三方登录,首先需要设计扩展性的表结构。参照如下:本文主要写第三方登录的代码。   浅谈数据库用户设计:htt […]...

  6. RESTful设计中的常见疑问

    最近写了几个有关RESTful的API相关内容,也谈谈对常见问题的自己的理解。 什么是RESTful 详情可以 […]...

  7. 201312-2 ISBN号码

    题目传送门:http://118.190.20.162/view.page?gpid=T4 问题描述 试题编号 […]...

  8. Android刷第三方Recovery &获取root权限

    一、基础环境 Make sure your computer has working adb and fast […]...

展开目录

目录导航