让你的代码更赏心悦目,介绍10个重要的Python技巧

作者:Keivan Chan

来源:97年陈伯伯

导读:

Python可以说是近5年来增长速度最快、应用最广泛的,并且是世界范围内最受欢迎的编程语言之一;

今天,我来给大家讲讲10个我个人觉得非常实用,但并不是所有人都知道的Python编程技巧;

保持这些良好的编程习惯,可以让我们写出更清晰、更优雅、更易读、更加赏心悦目的代码;

Python语言在设计之初,其实就有在考虑他语法的简洁性和可读性;

可能有人听说过Python之禅(Zen of Python);

这其实是Tim Peter在Python中留下的一个彩蛋;

如果你进入Python,输入Import this,你会看到作者留下的一条条编程建议,其中列出的这20条规则,就是在告诉你Python程序编写的指导方针;

另外,不知道大家有没有听说过Pythonic这个词,他其实也是指的是Python具有独特风格、简洁而优雅的代码;

最后,甚至在Python语言的提案PEP8中,也定义了一条条让代码更清晰、更简洁的代码规范;

这里我筛选出10个重要的技巧,这里就用实例一一讲解一些吧:

一、变量的交换

a = 1
b = 2


如果我们需要交换a 和 b中的内容
我们通常可以定义一个临是变量tmp


tmp = a 
a = b
b = tmp

先将a 的内容存放在其中,然后将a 设置成b,再将b 设置成这个临时的变量;

不过上面这段代码其实在Python中可以被改写成这样:这样的话,程序的可读性就提高了很多;

a = 1
b = 2


a, b = b, a

二、字符串的格式化

name = "Chan"


print("Hi, I'm" + name) 

通常我们在程序中需要组合或拼接字符串的话,我们用加号来做字符串的连接,如果做两个字符串的连接,这样做其实并没有什么问题,但如果字符串比较多的话,类似这种情况:

name = "Chan"
country = "China"
age = 23


print("Hi, I'm " + name + ". I'm from " + country + ". And I'm " + str(age) + "."

这样的程序就会显得非常的杂乱并且不易阅读;而且,当我们在连接整形数据的时候,还需要进行类型的转化,不然程序会报错。

其实,我们可以把程序写成这个样子,利用Python的百分号语法来格式化字符串,其中%s代表这里会被替代成一个字符串,%d表示这里会被替换成一个替换成一个十进制,最后面括号内里的内容表示会被替换的内容:

name = "Chan"
country = "China"
age = 23


print("Hi, I'm %s. I'm from %s. And I'm %d." % (name,country,age))

虽然程序写成这样已经好看很多了,但是我们在这里还可以做的更好一些,我们可以利用python中的format函数和花括号语法,把程序写成下面这样:

花括号里面的内容会被替换成format函数中传入的各个参数;

name = "Chan"
country = "China"
age = 23


print("Hi, I'm {}. I'm from {}. And I'm {}.".format (name,country,age))

花括号里面的内容会被替换成format函数中传入的各个参数,使用这个函数好处是:

你可以在花括号中写入被替代的索引,同个索引的地方会被替换成同一个内容,像下面这样:

name = "Chan"


print("Hi, I'm {0}. And I'm {0}.".format (name))
结果:Hi, I'm Chan. And I'm Chan

最后一种,也是我最喜欢的,叫做f-string,我们只需要在字符串开头写一个f,花括号中的内容就会被自动替换成指定表达式的值,注意是表达式:

name = "Chan"
country = "China"
age = 23


print(f"Hi, I'm {name}. I'm from {country}. And I'm {age+1}."

三、Python中Yield语

比如在这里,我们定义了一个fibonacci()函数,来列举斐波那契数列的前n位:0、1、1、2、3、5...

def fibonacci(n):
    a = 0
    b = 1
    nums = []
    for _ in range(n):
        nums.appends(a)
        a, b = b, a+b
    return nums
   
for i in fibonacci(10):
    print(i)

我们可以修改这个fibonacci()函数来使用Python中的yield语法:

首先把append改写成yield;

然后删除num列表;

这样程序会和以上是一样的,yield a表示,每当我们计算出一个元素,就立马将这个元素送出去;并不需要等整个列表生成后再输出;yield的优势是在一些非常耗时的操作,及时输出;

def fibonacci(n):
    a = 0
    b = 1
    for _ in range(n):
        yield a 
        a, b = b, a+b
    return nums


for i in fibonacci(10):
    print(i)

四、列表解析式

比如我们有一系列水果的名字,存放在fruit列表里,如果我们希望把列表的内容都改成大写,我们可以有很多种办法:

fruit = ["apple", "pear", "orange", "banana"]


第一种:
for i in range(len(fruit)): 
    fruit[i] = fruit[i].upper()
   
更简单的语法:
fruit = [x.upper for x in fruit]

方括号中for后面内容是告诉python,我们需要枚举fruit变量中的所有元素,而其中每个元素名称叫做x,前半部分则是将x大写upper().

做个练习,评论区可以说说这段代码是什么意思:

fruit = ["apple", "pear", "orange", "banana"]


new_fruit = [x for x in fruit if x.startwith("a")]

五:Enumerate函数

使用4的例子,我们希望按顺序输出一个列表中的所有元素,我们可以使用下面方式:

fruit = ["apple", "pear", "orange", "banana"]
for x in fruit:
    print(x)

如果我们希望得到每个值对用的索引值,比如apple是0,orange是2,我们可以使用Enumerate函数,把程序改成这样:

fruit = ["apple", "pear", "orange", "banana"]
for i,x in enumerate(fruit):
    print(i,x)
i是索引值,x是内容值

六、反向遍历

如果我们希望对列表从后往前依次输出,那么应该怎么做呢?

其实只要加入reversed函数就可以了:

fruit = ["apple", "pear", "orange", "banana"]
for i,x in enumerate(reversed(fruit)):
    print(i,x)

希望水果元素按照字母顺序输出,使用sorted函数:

fruit = ["apple", "pear", "orange", "banana"]
for i,x in enumerate(sorted(fruit)):
    print(i,x)

7、字典的合并操作

比如我们有两个字典,存放不同用户的用户名和密码,可以写一个程序,将两个字典合并:

a = {"ross":"123456","xiaoming":"xiao123"}
b = {"lili":"11111","nana":"123456"}


c = {}
for k in a :
    c[k] = a[k]


for k in b:
    c[k] = b[k]

我们可以将程序改写成:

a = {"ross":"123456","xiaoming":"xiao123"}
b = {"lili":"11111","nana":"123456"}


c = {**a, **b}

两个**号在python中称为解包unpacking,意为将a和b的内容都直接放入c中;

八、三元运算符:

我们经常会根据条件,将变量设置成不同的值:

if score > 60:
   s = "pass" 
else:
   s = "fail"

其实可以直接改成:

s = "pass" if score > 60 else "fail"

这里的if...else称为Python中的三元运算符;

九、序列解包

我们定义一个变量,存储名字的名和姓,如果我们想要单独提取他们的姓和名,并存入不同变量,我们最简单的办法就是使用split()函数:

Name = "Xiao Chen"


str_list = name.split()
first_name = str_list[0]
last_name = str_list[1]

其实这段代码可以被改写成:

Name = "Xiao Chen"


first_name,last_name = name.split()

我们直接将split()函数返回列表中的元素赋给first_name和last_name,这个操作在python中就被称为序列解包,这里的序列不一定是列表,可以是元组,甚至是range;

十、With语句

如果我们想打开某个文件,我们可以使用open函数,打开并读取文件;

读取后不要忘记关闭文件,如果不关闭,Python将一直占用这个文件的资源,直到程序退出为止;

f = open("suchfils.txt", "r")
s = f.read()
f.close()

对于小脚本来说,这不是什么大事,但是,对于一个长时间在服务器运行的程序,系统资源很可能被吃光,系统程序就会崩溃;所以更好的习惯是使用Python的with语句,将程序改写成:

with open("suchfils.txt", "r") as f:
     s = f.read()

这样的话,就不用调用close函数了,执行完,文件就会自动关闭;

◆ ◆ ◆  ◆ ◆

长按二维码关注我们


数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。

管理员二维码:

猜你喜欢

 笑死人不偿命的知乎沙雕问题排行榜

 用Python扒出B站那些“惊为天人”的阿婆主!

 全球股市跳水大战,谁最坑爹!

 华农兄弟、徐大Sao&李子柒?谁才是B站美食区的最强王者?

 你相信逛B站也能学编程吗

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
襄阳,古称雍州、襄州,位于湖北省中部,是一座历史文化名城。以下是襄阳的HTML和CSS介绍: HTML代码: ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>襄阳介绍</title> <style> body { font-family: 'Microsoft YaHei', sans-serif; background-color: #f8f8f8; } h1 { text-align: center; font-size: 28px; color: #333; margin-top: 50px; margin-bottom: 30px; } p { text-indent: 2em; line-height: 1.8em; font-size: 16px; color: #666; margin: 0 auto; max-width: 800px; } img { display: block; margin: 0 auto; max-width: 800px; height: auto; margin-bottom: 30px; } .container { margin: 0 auto; max-width: 900px; padding: 20px; background-color: #fff; box-shadow: 0px 0px 10px rgba(0,0,0,0.1); border-radius: 5px; margin-bottom: 50px; } </style> </head> <body> <div class="container"> <h1>襄阳介绍</h1> <img src="襄阳图片.jpg" alt="襄阳图片"> <p>襄阳,古称雍州、襄州,位于湖北省中部,是一座历史文化名城。襄阳有着悠久的历史和文化底蕴,是中国历史上的重要城市之一。襄阳有着许多著名的历史文化遗迹,如古老的襄阳城、汉江古桥、古文化街等等。此外,襄阳的自然景观也十分优美,有着悠久的历史和文化底蕴,是中国历史上的重要城市之一。襄阳有着许多著名的历史文化遗迹,如古老的襄阳城、汉江古桥、古文化街等等。此外,襄阳的自然景观也十分优美,有着悠久的历史和文化底蕴,是中国历史上的重要城市之一。襄阳有着许多著名的历史文化遗迹,如古老的襄阳城、汉江古桥、古文化街等等。此外,襄阳的自然景观也十分优美,有着悠久的历史和文化底蕴,是中国历史上的重要城市之一。襄阳有着许多著名的历史文化遗迹,如古老的襄阳城、汉江古桥、古文化街等等。此外,襄阳的自然景观也十分优美,有着悠久的历史和文化底蕴,是中国历史上的重要城市之一。襄阳有着许多著名的历史文化遗迹,如古老的襄阳城、汉江古桥、古文化街等等。此外,襄阳的自然景观也十分优美,有着悠久的历史和文化底蕴,是中国历史上的重要城市之一。襄阳有着许多著名的历史文化遗迹,如古老的襄阳城、汉江古桥、古文化街等等。此外,襄阳的自然景观也十分优美,有着悠久的历史和文化底蕴,是中国历史上的重要城市之一。</p> </div> </body> </html> ``` CSS代码: ```css body { font-family: 'Microsoft YaHei', sans-serif; background-color: #f8f8f8; } h1 { text-align: center; font-size: 28px; color: #333; margin-top: 50px; margin-bottom: 30px; } p { text-indent: 2em; line-height: 1.8em; font-size: 16px; color: #666; margin: 0 auto; max-width: 800px; } img { display: block; margin: 0 auto; max-width: 800px; height: auto; margin-bottom: 30px; } .container { margin: 0 auto; max-width: 900px; padding: 20px; background-color: #fff; box-shadow: 0px 0px 10px rgba(0,0,0,0.1); border-radius: 5px; margin-bottom: 50px; } ``` 以上代码使用了简洁、清晰的字体,选择了淡雅的背景色和合适的字体大小,使得整个页面看起来简洁端庄,让人赏心悦目。同时,使用了div容器将内容包裹起来,并添加了阴影和圆角,让页面加美观。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值