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简介和基础

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

  1. python多线程学习笔记(超详细)

    python threading 多线程 一. Threading简介 首先看下面的没有用Threading的程序 ):  s += i  time.sleep(  ):  s += i  time. ...

  2. 0003.5-20180422-自动化第四章-python基础学习笔记--脚本

    0003.5-20180422-自动化第四章-python基础学习笔记--脚本 1-shopping """ v = [ {"name": " ...

  3. python 基础学习笔记(1)

    声明:  本人是在校学生,自学python,也是刚刚开始学习,写博客纯属为了让自己整理知识点和关键内容,当然也希望可以通过我都博客来提醒一些零基础学习python的人们.若有什么不对,请大家及时指出, ...

  4. Python基础学习笔记(十三)异常

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-exceptions.html Python用异常对象(excep ...

  5. Python基础学习笔记(十二)文件I/O

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-files-io.html ▶ 键盘输入 注意raw_input函 ...

  6. Python基础学习笔记(十一)函数、模块与包

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-functions.html 3. http://www.liao ...

  7. Python基础学习笔记(十)日期Calendar和时间Timer

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-date-time.html 3. http://www.liao ...

  8. Python基础学习笔记(九)常用数据类型转换函数

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-variable-types.html 3. http://www ...

  9. Python基础学习笔记(八)常用字典内置函数和方法

    参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-dictionary.html 3. http://www.lia ...

随机推荐

  1. 封装Vue Element的可编辑table表格组件

    前一段时间,有博友在我那篇封装Vue Element的table表格组件的博文下边留言说有没有那种"表格行内编辑"的封装组件,我当时说我没有封装过这样的组件,因为一直以来在实际开发 ...

  2. struts 返回字符串

    方法一: HttpServletResponse response = ServletActionContext.getResponse(); response.getWriter().print(& ...

  3. Educational Codeforces Round 97 (Rated for Div. 2) D. Minimal Height Tree (贪心)

    题意:有一个从根节点\(BFS\)得来的序列(每次\(bfs\)子节点的时候保证是升序放入队列的),现在让你还原树(没必要和之前相同),问能构造出的最小的树的深度. 题解:不看根节点,我们从第二个位置 ...

  4. Cell 动态行高文字显示不全问题探索

    目录 问题概述 一.新建工程 二.尝试复现问题 尝试解决 修改contentLblBtmCon优先级为High(750) 修改contentLblBtmCon优先级为Low(250) 小结 其他解决思 ...

  5. 梨子带你刷burp练兵场(burp Academy) - 服务器篇 - Sql注入 - SQL injection UNION attack, determining the number of columns returned by the query

    目录 SQL injection UNION attack, determining the number of columns returned by the query SQL injection ...

  6. K8S(16)集成实战-使用spinnaker进行自动化部署

    K8s集成实战-使用spinnaker进行自动化部署 1 spinnaker概述和选型 1.1 概述 1.1.1 主要功能 Spinnaker是一个开源的多云持续交付平台,提供快速.可靠.稳定的软件变 ...

  7. codeforces 1076E Vasya and a Tree 【dfs+树状数组】

    题目:戳这里 题意:给定有n个点的一棵树,顶点1为根.m次操作,每次都把以v为根,深度dep以内的子树中所有的顶点(包括v本身)加x.求出最后每个点的值为多少. 解题思路:考虑到每次都只对点及其子树操 ...

  8. 关于TCP和UDP的通俗理解

    TCP和UDP是网络基础,很多公司面试也都会问到,今天我在这里,根据大神们的讲解,自己总结借鉴一下. 首先,先提一个问题:英雄联盟是TCP还是UDP? 这个问题对于游戏玩家,可能大多数人都没有想过.一 ...

  9. c# xaml (1)

    原文:https://www.wpf-tutorial.com/xaml/what-is-xaml/ vs2017 新建 wpf 项目,在解决方案里会自动创建MainWindow.xaml文件 1.新 ...

  10. HDU4565-数学推导求递推公式+矩阵快速幂

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4565 我们带着这个根号是没法计算的 我们仔细观察一下,(a+sqrt(b))^n用二项式定理展开,我 ...