python基础

Python基础_网络自动化

安装

下载 PyCharm: Python IDE for Professional Developers by JetBrains

⼀、变量、常量:

在程序运⾏中能变的叫变量;不变的叫常量。
【常量】
相对于其它语⾔(如C 等),Python 并没有严格定义常量这个概念。约定俗成⽤全⼤写表示。如 PI (圆周率
π),MAX_BYTES(TCP 窗⼝⼤⼩ 65535)

【变量】
1、变量随⽤随写,不⽤事先申明,可以来回赋值不同类型的值,切换⾃如,所以说 Python 很⽅便。除把变量
理解成⼀个篮⼦装东⻄外,我更喜欢把变量理解成⼀个标签纸,赋值给谁就贴在谁的头上。

a = 1
print(type(a))
print(a)

输出:
<class 'int'>
1

2、变量可以⼤⼩写、下划线开头,不要以数字,特殊符号开头。建议咱们⽇常以⼩写字⺟开头且能⻅名知意就
好,不要太标新⽴异搞特殊符号。

3、变量名是区分⼤⼩写的,⽐如 Aa、AA、aA 是不同的变量

4、Python 的保留字不能⽤做变量,⽐如 def 、while 、for ……。很难全记住不过也没必要全记住,其实咱们
敲下去的时候,是保留字的会变颜⾊!

⼆、⽅法、函数:

⼤致类似,在 Python 初学者来说甚⾄可以混⽤这个概念,我们可以把它们当成是⽣产⼯具,给点什么⽣产资料
下去,然后就可以⽣产出我们要的产品来。
函数不需要跟对象关联,⽅法需要跟对象关联。换个说法,⽤到⽅法,我们需要说⽤到【谁的】⽅法,⽽函数
不⽤。再换个说法,函数⼀般需要参数,⽅法不⼀定要参数。(这个可能要感悟琢磨⼀下哈,现在不理解⽆所
谓,按“⽣产⼯具”加“⽣产原料”输出“产品”来理解即可吧。

print(dir(int))
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']
print(dir(str))
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'removeprefix', 'removesuffix', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

其实呢,⽅法可以是类和对象的概念,类⾥⾯有属性和⽅法,暂不扯远。⽆论函数还是⽅法,都可以理解成前
⼈经验总结后,封装好了做了⼀个整理归纳和沉淀,我们现在要什么功能就相应调⽤就可以了。⽐如轮⼦有
了,底盘有了,⽅向盘有了,发动机有了,那我们就开始组装⻋辆轻松上路吧。

⼩结:

⽂⾸我⾃⼰吹⽜说⾃⼰弄Python"若⼲年"了,这期内容看起来很基础很基础了,我跟着指令敲起来、笔记做起
来,依然还是有些东⻄是新学到的。我们学习就是要动起来,光看视频不操作的话效果⾮常有限,⼀定要结合
实践,做点笔记,边做边学。

三、字符串:

1.字符串的表示

  • 单引号 ‘’
  • 双引号 “”
  • 三引号 ‘’‘’‘’

引号必须得是英⽂字符,误⽤中⽂字符会报错。如字符⻓度短的,⽤单引号或双引号(三引号也⾏),但是不
要混⽤,即不要⼀边单引,⼀边双引或三引。如字符⻓度⻓,要跨⾏那种,⼀般都⽤三引号。

str1 = 'huawei'
str2 = "Cisco"
str3 = '''风萧萧兮易水寒,壮士一去兮不复还。(复还 一作:复反)
探虎穴兮入蛟宫,仰天呼气兮成白虹。(此句疑为后人补作)'''
print(str1)
print(str2)
print(str3)
输出:
huawei
Cisco
风萧萧兮易水寒,壮士一去兮不复还。(复还 一作:复反)
探虎穴兮入蛟宫,仰天呼气兮成白虹。(此句疑为后人补作)

2. 字符串的拼接

字符串拼接⽤ + 号,主要类型要是 str ,字符串类型,结果也是字符串类型

print(str1 + str2)
输出:
huaweiCisco

有时候遇到⼀些⾮字符串类型的变量需要拼接,如数值 int 类型等,可以先将其转换成字符串,然后再按上⾯的
套路,⽤ + 号进⾏拼接处理。

statement1 = '网段192.168.0.0/24 有'
quantity = 60
statement2 = '用户'
all_str = statement1 + str(quantity) + statement2
print(all_str)
输出:
网段192.168.0.0/2460用户字符串的⽅法

3. 字符串的⽅法

字符串的⽅法超级⽆敌多,平时也⽤不了那么多,关键是常⽤的能掌握,很特殊的要⽤到会查怎么⽤。这⾥先
从常⻅的字符串⽅法⼊⼿吧。
upper()、lower()
upper() ⽅法是把字符串变量⾥是英⽂的⽆论⼤⼩写,统统给变成⼤写,然后返回⼀个新的对象。特别注意,它
是返回个结果⽽已

lower() ⽅法是把字符串变量⾥是英⽂的⽆论⼤⼩写,统统给变成小写,然后返回⼀个新的对象。特别注意,它
是返回个结果⽽已

strip()
去掉⼀个字符串左右两边的特定字符串(默认是空格,其实也可以是别的字符),然后新返回。strip()的同⻔
师兄弟还有:rstrip()去掉右边,lstrip()去掉左边。

ipaddress = '   192.15.1.1    '
print(ipaddress)
print(ipaddress.strip())

输出:
   192.15.1.1    
192.15.1.1

count()
count() ⽅法返回字符串⾥⾯含有多少个()⾥⾯的参数,注意这个⽅法⼀定要带参数(argument),否则会报错。

print(ipaddress.count('1'))
输出:
4

input()

ipaddress = input('请输入ip地址 \n')
print(ipaddress)
输出:
请输入ip地址 
1.1.1.1
1.1.1.1

startswith()、endswith()
从前⾯的例⼦顺着下来,童鞋们应该有点感觉了吧?“望⽂⽣义”也能知道个七七⼋⼋了。这⾥主要说⼀下
Python 有个数值类型叫布尔类型(bool),返回的是 True(1)、False(0),主要是⽤来做判断的。startswith()
就是判断字符串是否以()内参数开头。同理,好基友 endswith() ⾮常相似,不再赘述。

print(ipaddress.startswith('192'))
print(ipaddress.startswith('12'))
print(ipaddress.endswith('5.1.1'))
输出:
True
False
True

isdigit()
说到布尔值,⻢上继续再推进,Python ⽅法中,⼀般以 is 开头的,通常返回值就是个布尔值,⽤来做判断
的。isdigit() ⽅法是判断⼀个字符串(注意,它已经是⼀个字符串了),内容是不是可以表示1个整数数字,

print(ipaddress.isdigit())
输出:
False

isalpha()
isdigit() ⽅法判断是否为纯整数数字,isalpha() ⽅法则是来判断是否为纯字⺟的,他们的操作对象都是字符
串,字符串,字符串。(中文和字母都算)

四、数值类型:

5中类型(布尔型、整型、⻓整型、浮点型、复数) ,对于咱们⽹⼯来说,重点掌握前

【整型】不带⼩数点的正数或负数。⽐如设备的端⼝数、槽位数量等。

【浮点型】带⼩数点的正数或负数。⽐如内存利⽤率、链路利⽤率、CPU利⽤率、温度湿度等。

【布尔型】真(True,1);假(False,0),通常⽤作判断,配合分⽀语句,⽐如链路利⽤率超 70%,CPU
利⽤率超过 50%,维度超过 65°C……

五、数值运算:

+-*/%//**
地板除求幂
a = 2 ** 2
print(a)
a = 12 // 10
print(a)
输出:
    
4
1

六、运算符与字符串互动:

前⾯我们已经学习了变量、字符串,现在我们联动数值运算复习下,温故⽽知新。

1、字符串与【*】联动,如下:

a = "huawei"
print(a*5)
输出:
huaweihuaweihuaweihuaweihuawei

2、分割线妙⽤,如下:

a = '********' * 3
print(a)
输出:
************************

3、字符串与【+】联动,如下:

print('asd '+'asd')
输出:
asd asd

4、统计,累加 +=

b = 1
b += 1
print(b)
输出:
2

七、列表概念与元素:

有序的集合,⽤中括号[]括起来,从[]空列表开始,你想装啥就装啥。

list = [1,'huawei',3,[1,2],5]
print(list[3])
输出:
[1, 2]

list = [1,2,3,[1,2],5]
print(list[-2])
输出:
[1, 2]

print(list[::3])
输出:
[1, [1, 2]]

print(len(list))
输出:
5

⼋、列表⽅法与函

range()
⼤神视频中说 range(5) 如果在 Python2 的话,直接是返回⼀个列表 [0,1,2,3,4],但是我们已经是 Python3
了,后⾯估计也⼀般不⽤接触到 Python2,知道有这个情况就好。在 Python3 中,range(5) 返回的是⼀个
range 类型对象。
(如果直接返回列表,会消耗计算机资源,⽐如 range(1000000000),妈呀,这个直接返回⼀个巨⻓的列表,
卡卡卡卡啊,所以 Python3 做了优化。)

a = range(5)
print(type(a))
输出:
<class 'range'>

for i in range(0,20,2):
    print(i)
输出:
0
2
4
6
8
10
12
14
16
18

append()
这个⽅法在列表末位添加元素。

interfaces = []
interfaces.append('gi0/0/1')
interfaces.append('gi0/0/2')
interfaces.append('gi0/0/3')
interfaces.append('gi0/0/4')
interfaces.append('gi0/0/5')
for i  in interfaces:
    print(i)
输出:
gi0/0/1
gi0/0/2
gi0/0/3
gi0/0/4
gi0/0/5

insert()
append() ⽅法只能⽤在列表末位添加元素的场景,远远不能满⾜我们⽇常的⽣产应⽤啊。于是 insert() ⽅法出
来露露脸。

interfaces = []
interfaces.append('gi0/0/1')
interfaces.append('gi0/0/2')
interfaces.append('gi0/0/3')
interfaces.append('gi0/0/4')
interfaces.append('gi0/0/5')
interfaces.insert(2,'a')
for i  in interfaces:
    print(i)
输出:
gi0/0/1
gi0/0/2
a
gi0/0/3
gi0/0/4
gi0/0/5

pop()
有添加就得有移除啊,来来来,来个移除的⽅法,移除操作后那个元素作为返回值的,其实就是弹出来你可以
⽤另外⼀个变量把它接起来。

interfaces = []
interfaces.append('gi0/0/1')
interfaces.append('gi0/0/2')
interfaces.append('gi0/0/3')
interfaces.append('gi0/0/4')
interfaces.append('gi0/0/5')
interfaces.insert(2,'a')
interfaces.pop()
for i  in interfaces:
    print(i)
输出:
gi0/0/1
gi0/0/2
a
gi0/0/3
gi0/0/4

九、字典概念与元素

概念

Python 中,字典是有序(3.7前⽆序,3.7后有序)的键值对集合,⽤⼤括号表示,元素之间⽤逗号隔开。键、
值的数据类型还挺多样的,但⽹⼯来说,普遍是字符串、整形、浮点型。
dict = {‘Vendor’:‘Cisco’,‘Model’:‘WS-C3750E-48PD-S’,‘Ports’:48,‘IOS’:‘12.2(55)SE12’,‘CPU’:36.3}

dict = {'Vendor':'Cisco','Model':'WS-C3750E-48PD-S','IOS':'12.2(55)SE12','CPU':36.3}

定位元素

dict(‘键’) ->值

print(dict['Vendor'])
输出:
Cisco

增加、修改元素

dict(‘键’) = 值

dict['Vendor'] = 'huawei'
print(dict['Vendor'])
输出:
huawei

删除元素

del dict[‘键’],del 其实不是⽅法,也不是函数,是⼀个“语句”,也可以叫指令吧。另有⼀个⽅法 pop() 可实现类似功能。

⽅法和函数:

print(dict.keys())
print(dict.values())
print(dict.items())
print(dict.get('Vendor'))
输出:
dict_keys(['Vendor', 'Model', 'Ports', 'IOS', 'CPU'])
dict_values(['huawei', 'WS-C3750E-48PD-S', 48, '12.2(55)SE12', 36.3])
dict_items([('Vendor', 'huawei'), ('Model', 'WS-C3750E-48PD-S'), ('Ports', 48), ('IOS', '12.2(55)SE12'), ('CPU', 36.3)])
huawei

十 、布尔值概念

Python中的布尔值为True,False,主要作⽤是来判断条件是否成⽴。如果条件成⽴则Python返回True,否则
Python返回False。

print(1 == 1)
print(1 != 1)
print(1 >= 2)
print(1 <= 2)
print(1 > 1)
print(1 < 1)
输出:
True
False
False
True
False
False

逻辑运算符

and or not

print(1 == 1 and 1 == 2)
print(1 != 1 or 1 == 1)
print(not(1 >= 2))
输出:
False
True
True

成员运算符

not in、 in

a = 'huawei'
b = 'h'
c = 'q'
print(b in a)
print(c not in a)
输出:
True
True

bool()

对所有为空的对象,永远返回False。
请添加图片描述

help(bool)

Help on class bool in module builtins:

class bool(int)
 |  bool(x) -> bool
 |  
 |  Returns True when the argument x is true, False otherwise.
 |  The builtins True and False are the only two instances of the class bool.
 |  The class bool is a subclass of the class int, and cannot be subclassed.
 |  
 |  Method resolution order:
 |      bool
 |      int
 |      object
 |  ……

十一、 集合

Python中,“集合”可以说是特殊的列表。列表可以有重复的元素,⽽集合不允许这样。另外,集合是⽆序的。字典则是有序的、带键值对的集合。

a = {"1.1.1","1.1.1","2.2.2"}
print(a)
输出:
{'1.1.1', '2.2.2'}

⽆序不能索引,⾃然也没办法定位。

C:\Users\82127\.conda\envs\pythonProject\python.exe E:/log/python/pythonProject/main.py
  File "E:\log\python\pythonProject\main.py", line 2
    print(a{0})
           ^
SyntaxError: invalid syntax

add()
给集合增加元素。

a = {"1.1.1","1.1.1","2.2.2"}
a.add("1.2.3")
print(a)
输出:
{'2.2.2', '1.2.3', '1.1.1'}

remove()
给集合删除元素。

a = {"1.1.1","1.1.1","2.2.2"}
a.remove("2.2.2")
print(a)
输出:
{'1.1.1'}

rozenset()
请添加图片描述

十二、元组

也是特殊的列表,是⼀个⼀旦创建了,就“加不了”、“删不掉”元素的列表,但它有序的,可重复。
建元组的两种⽅法如下:

vendors1 = ('Cisco','Juniper','Huawei')
vendors2 = tuple(('Cisco','Juniper','Huawei'))
print(vendors2)
print(vendors1)
print(type(vendors2))
输出
('Cisco', 'Juniper', 'Huawei')
('Cisco', 'Juniper', 'Huawei')
<class 'tuple'>

index()

vendors2 = tuple(('Cisco','Juniper','Huawei'))
print(vendors2.index("Huawei"))
输出:
2

count()

print(vendors2.count("Huawei"))
输出:
1

⼩结
请添加图片描述
请添加图片描述

  • 4
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

期待未来的男孩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值