Python语言 是否真的如传说中的优雅
小标 2019-01-02 来源 : 阅读 722 评论 0

摘要:本文主要向大家介绍了Python语言 是否真的如传说中的优雅,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

本文主要向大家介绍了Python语言 是否真的如传说中的优雅,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助。

Python 是否真的如传说中的优雅
Python 号称“最优雅的语言”,近年来的热度超过了“世界上最好的语言” PHP,于是简单学习了一下。发现 Python 有的语法确实很爽,比如切片。但同时觉得,有些语法对于之前主要使用 PHP 和 JavaScript 的新手来说,可能会稍感水土不服。简要列举一些比较特别的示例,分享给大家。
奇怪的语法


用 r'' 表示''内部的字符串不转义
print(r'I\'m \"OK\"!')
print('I\'m \"OK\"!')


用 '''内容''' 表示多行内容
print('''line1
line2
line3''')


要注意的运算符
python 中不存在 &&、||、=== 运算符,用以下运算符代替:
and
or
is
python 中用 // 表示相除‘舍一取整’
14 // 3
14 / 3
python 中用 ** 表示幂赋值运算
2 ** 3


内容含有中文,需要最开始一行声明 UTF-8 读取
# -*- coding: utf-8 -*-


字符串格式化输出
'Hi, %s, you have $%d.' % ('Lucy', 100)
'[%5d - %05d]' % (3, 1)
'%.2f' % 3.1415926
'growth rate: %d %%' % 7


规定定义只有一个元素的元组时,要加,消除歧义
t1 = (1,)
t2 = (1)


数据类型检查
isinstance('3.14', (int, float))


默认参数不能是可变对象(list、dict)
def add_end(L=[]):
    L.append('END')
    return L

add_end()
add_end()


可变参数(args 接收的是一个 tuple)
def calc(*args):
    sum = 0
    for n in args:
        sum = sum + n * n
    return sum

calc(1, 2)
calc(1, 2, 3, 4, 5)


关键字参数(kw 接收的是一个 dict)
def person(name, **kw):
    print('name:', name, 'other:', kw)

person('Lucy')
person('Lucy', age=23, weight='70kg')


切片
# -*- coding: utf-8 -*-
L = [i for i in range(100)]

# 索引从 0 开始, 到 10 结束, 步长为 1
print(L[:10]) // [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 从索引 10 开始, 步长为 1
print(L[10:]) // [10 ,11, 12, 13, ... , 99]

# 最后 10 个元素,  步长为 1
print(L[-10:]) // [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]

# 从索引 2 开始, 步长为 3
print(L[2::3]) // [2, 5, 8, 11, ... , 98]

# 索引从 4 开始, 到 50 结束, 步长为 5
print(L[4:50:5]) // [4, 9, 14, 19, 24, 29, 34, 39, 44, 49]

# 索引从 4 开始, 步长为 10
print(L[4::10]) // [4, 14, 24, 34, 44, 54, 64, 74, 84, 94]

# 索引从 4 开始, 步长为 10, 取前 3 个元素
print(L[4::10][:3]) // [4, 14, 24]

# 索引从 4 开始, 步长为 10, 从第 3 个元素往后取
print(L[4::10][3:]) // [34, 44, 54, 64, 74, 84, 94]

# 索引从 4 开始, 步长为 10, 取最后 3 个元素
print(L[4::10][-3:]) // [74, 84, 94]

# 索引从 4 开始, 步长为 10, 截掉最后 3 个元素
print(L[4::10][:-3]) // [4, 14, 24, 34, 44, 54, 64]

# 列表倒序
print(L[::-1])

# 列表倒序, 从倒数索引 3 开始, 取到末尾
print(L[3::-1]) // [3, 2, 1, 0]

# 首字母大写
def firstCharUpper(s):
return s[:1].upper() + s[1:]

print(firstCharUpper('hello'))
print(firstCharUpper('sunday'))
print(firstCharUpper('september'))


生成列表
[x * x for x in range(1, 11) if x % 2 == 0]


斐波拉契数列(Fibonacci)
def fib(max):
n, a, b = 0, 0, 1
while n < max:
    print(b)
    a, b = b, a + b
    n = n + 1
return 'done'


装饰器
import functools

def log(func):
    @functools.wraps(func)
    def wrapper(*args, **kw):
        print('call %s():' % func.__name__)
        return func(*args, **kw)
return wrapper


匿名函数
list(map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9]))


偏函数
import functools
int2 = functools.partial(int, base=2)
int2('1000000')
int2('1010101')


遍历取得索引(需要额外使用 enumerate 函数)
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for index, name in enumerate(L):
    print(index, '-', name)


列表生成式 -- 实现找出对称的三位数,例如 121
L1 = [x for x in range(100, 1000) if str(x)[0] == str(x)[-1]]

L2 = [(100 * m) + (10 * n) + m for m in range(1, 10) for n in range (0, 10)]


装饰器 【优雅】
def log(f):
    def fn(*args, **kw):
        print('call ' + f.__name__ + '()...')
        return f(*args, **kw)
    return fn

@log
def add(x, y):
    return x + y

print(add(1, 2))


斐波那契数列(0, 1, 1, 2, 3, 5, 8 ...)
class Fib(object):
    def __init__(self, num):
        a, b, L = 0, 1, []
        for n in range(num):
            L.append(a)
            a, b = b, a + b
        self.numbers = L
    def __str__(self):
        return str(self.numbers)
    __repr__ = __str__
    def __len__(self):
        return len(self.numbers)

f = Fib(10)
print(f)
print(len(f))

本文由职坐标整理并发布,希望对同学们学习Python有所帮助,更多内容请关注职坐标编程语言Python频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程