Linux 运维实战系列——echo 打印
命令小结echo命令是 linux 中最基础的命令,也是最常用的命令之一,常用于在终端处进行输入输出验证,而且在写shell脚本的时候,也会被经常用到。
实战经验echo显示字符串与变量显示字符串,直接打印即可,显示变量,用 $引用, 示例如下:
123456789[baiyongan@bya ~]$ echo 'hello world'hello world[baiyongan@bya ~]$ echo "hello world"hello world[baiyongan@bya ~]$ echo hello worldhello world[baiyongan@bya ~]$ str="hello world"[baiyongan@bya ~]$ echo "$str, good night"hello world, good night
用echo -e 显示反斜杠转义转义字符,是shell中的一些有特殊功能的字符,比如\n代表换行,\t代表制表符等。它统一由反斜线 “\“ 开头,后面跟上一 ...
如何写出 Pythonic 的代码?
什么是Pythonic?Pythonic就是以Python的方式写出简洁、优美的代码。
The Zen of Python(Python之禅) 执行 import this 查看
Pythonic vs Non-Pythonic common casesP 代表 Pythonic, NP代表 Non-Pythonic。相比于NP,P的写法简练,明确,优雅,绝大部分时候执行效率高,代码越少也就越不容易出错。好的程序员在写代码时,应该追求代码的正确性,简洁性和可读性,这恰恰就是pythonic的精神所在。
变量交换赋值1234567#Pa,b = b,a#NPtmp = aa = bb = tmp
Unpacking1234567891011#Pl = ['David', 'Pythonista', '+1-514-555-1234']first_name, last_name, phone_number = l# Python 3 Onlyfirst, *middle, last = another_list#NPl ...
Python 中的可变参数 *args 和 **kwargs
在Python中的代码中经常会见到这两个词 *args 和 **kwargs,这两个词主要用于函数定义,表示将不定数量的参数 (Variable Argument) 传递给一个函数。而其实前面的星号才是必须的,args 和 kwargs 只是编程人员约定的变量名字。
args 是 arguments 的缩写,表示位置参数,它的数据类型是一个tuple。
kwargs 是 keyword arguments 的缩写,表示关键字参数。它的数据类型是一个dict。
Ordering ArgumentsPython中的参数有位置参数 (positional arguments) 和关键字参数 (keyword arguments) 之分。在函数定义或者函数调用时,各种参数之间的顺序是有要求的,顺序如下:
Formal positional arguments
*args
Keyword arguments
**kwargs
*args的用法*args就是就是传递一个可变参数列表给函数实参,这个参数列表的数目未知,甚至长度可以为0。
1234567def test_args ...
如何写出更好的 Python 函数 (翻译-转载)
前言Python 简洁灵活,但是要想用好,并不简单,那么如何写出一个好的Python函数呢?《Writing Idiomatic Python》一书的作者在 Medium 上发表了一篇文章,给出了 6 个建议。
0. 怎样算是一个好的函数?“好”的 Python 函数和“差”的 Python 函数之间有什么差别呢?每个人都有自己的理解。基于我的理解,如果一个 Python 函数能够符合下面的大部分条件,我会认为它是一个“好”函数:
命名合理
单一功能
包括文档字符串
返回一个值
不超过 50 行
是幂等函数或纯函数
对许多人来说,这些要求可能显得过于苛刻了。
不过,如果你的函数遵循这些规则,你的代码会非常漂亮。
下面,我将一一讨论这些规则,然后总结它们是如何创造“好”函数的。
1. 命名(Naming)在这个问题上,我最喜欢的一句话是:
计算机科学中只有两件事很让人头疼:缓存失效和命名。
尽管这听起来很莫名其妙,但给一个事情命名太难了。下面是一个反面案例:
1def get_knn_from_df(df):
上面这个例子来源于数据分析领域 (准确的讲是机器学习相关的, ...
Python 中的魔术方法(magic methods)
拓展阅读Python魔术方法-Magic Method
(译)Python魔法方法指南
Python 内置函数
内置函数内置函数,一般都是因为使用频率比较频繁或是元操作,所以通过内置函数的形式提供出来。
python 版本不同,其内容也有变化,例如之前Py2 vs. Py3 还存在 xrange() vs. range(), raw_input() vs. input(),现在只保留range()、input()。依据目前的python 3.8 版本,共计69个(实际上,only 42 of them are actually functions)。
按功能类型分类
类型
数量
数学运算
7
类型转换
24
序列操作
8
对象操作
9
反射操作
8
变量操作
2
交互操作
2
文件操作
1
编译执行
5
装饰器相关
3
注:其分类的对象操作和反射操作中,有自省的东西,见之前的博客——《Python 自省与反射》,文件操作和交互操作也可以合并,因为参照的别的博客文章,所以,还是宏观掌握,实际应用为主,也懒得自己重新分类了。
数学运算
函数名
功能简介
abs()
返回一个数的绝对值
divmod()
返回两个数值的商和余数
...
Python 自省与反射
自省In computing, type introspection is the ability of a program to examine the type or properties of an object at runtime. Some programming languages possess this capability.在计算机科学中,内省是指计算机程序在运行时(Run time)检查对象(Object)类型(以及属性等)的一种能力,通常也可以称作运行时类型检查。
方法
作用
类型
help()
查看函数或者模块用途的详细说明
自省
dir()
返回对象所有属性
自省
type()
查看对象类型
自省
isinstance()
判断一个对象是否是一个已知的类型
自省
issubclass()
判断一个类是不是另一个类的子类
自省
id()
返回地址值
自省
callable()
判断对象是否可调用
自省
自省的常见使用方式help()help() 函数用于查看函数或模块用途的详细说明。主要在IDE环境下使用,接受任何拥 ...
Python 命名空间、作用域及LEGB规则
定义命名空间Python使用叫做命名空间的东西来记录变量的轨迹。
命名空间是一个字典(dictionary),它的键就是变量名,它的值就是那些变量的值,即 {name:object}映射。
A namespace is a mapping from names to objects. Most namespaces are currently implemented as Python dictionaries。
作用域Python 中 name-object 的映射存储在不同的作用域中,各个不同的作用域是相互独立的。而我们就在不同的作用域中搜索 name-object。
Python是静态作用域,也就是说,在Python中,变量的作用域源于它在代码中的位置;在不同的位置,可能有不同的命名空间。命名空间是变量作用域的体现形式。如:函数定义了本地作用域,而模块定义的是全局作用域。如果想要在函数内定义全局作用域,需要加上global修饰符。
命名空间的访问:globals() 和 locals()Python的命名空间是一个字典,字典内保存了变量名称与对象之间的映射关系。因此,查找变量 ...
Python 中的 global、nonlocal 辨析
global 语句
语法:声明此变量为全局变量
用法: global [变量名]
注意:引用全局变量时,不需要global 声明,但是后面使用或者修改这个全局变量的时候,需要global声明。
应用场景:变量定义在函数外部的时候,如果函数里面想改变这个全局变量的值,需要在当前的引用函数里面重新定义一个变量, 并用关键字global修饰。
123456789a = 1 # 外部全局变量def change(): global a # 与外部全局变量同名 a += 1 print("函数内部的a的值:{}".format(a)) # 2 change()print("调用change函数后, 函数外部的a的值:{}".format(a)) # 2
nonlocal 语句
语法:允许内嵌函数修改定义在语法上位于外层的函数的作用域中的一个或者多个名称
用法: nonlocal [变量名]
注意 ...
《强势》摘录
见字如晤
书名: 强势
作者: (美)曼纽尔•J•史密斯
出版年份: 2014-8
评分: 8.1
.douban-card-block {
display: flex;
justify-content: center;
align-items: center;
width: 100%;
max-height: 400px;
}
.douban-card {
display: flex;
margin: 30px 10px;
padding: 15px;
border-radius: 15px;
position: relative;
justify-content: center;
...