原文章地址:https://www.ctolib.com/docs/sfile/interpy-zh/index.html

第一章 *args 和 **kwargs

*args**kwargs仅仅是一个通俗的命名约定,我们也可以称他们为*he**she,只有星号才是他们的本体。

运用*args**kwargs我们可以将不定数量的参数传递给函数。*args形成元祖,**kwargs形成字典。

def test(num, *args, **kwargs):
    print('这是个正常数量的参数:', num)
print('这是个不定数量的args参数:', args)
print('看下*args和args有什么区别', *args)
print('这是个不定数量的kwargs参数:', kwargs)
print('看下*kwargs和kwargs有什么区别', *kwargs)


test(1, 2, 'java', 'python', 'shell', 'php', name='Ton', sex=0, age=25)


# 输出(打印**kwargs会报错https://www.yangyanxing.com/article/kwargs_in_python.html):
# 这是个正常数量的参数: 1
# 这是个不定数量的参数: (2, 'java', 'python', 'shell', 'php')
# 看下*args和args有什么区别 2 java python shell php
# 这是个不定数量的kwargs参数: {'name': 'Ton', 'sex': 0, 'age': 25}
# 看下*kwargs和kwargs有什么区别 name sex age

  

第二章 调试(Debug)

此处的debug并非开发工具的调试功能(如pycharm中的debug),而是调用模块pdb。其中pdb.set_trace()可以实现在某些特定点查看变量信息和各种执行时信息

  • c: 继续执行
  • w: 显示当前正在执行的代码行的上下文信息
  • a: 打印当前函数的参数列表
  • s: 执行当前代码行,并停在第一个能停的地方(相当于单步进入)
  • n: 继续执行到当前函数的下一行,或者当前行直接返回(单步跳过)

 

第三章 生成器

 先来了解一下循坏、遍历、迭代、遍历的区别

循环(loop),指的是在满足条件的情况下,重复执行同一段代码。比如,while语句。[ 循环则技能对应集合,列表,数组等,也能对执行代码进行操作。]                      
迭代(iterate),指的是按照某种顺序逐个访问列表中的每一项。比如,for语句。[迭代只能对应集合,列表,数组等。不能对执行代码进行迭代。]                
遍历(traversal),指的是按照一定的规则访问树形结构中的每个节点,而且每个节点都只访问一次。 [遍历同迭代一样,也不能对执行代码进行遍历。]
递归(recursion),指的是一个函数不断调用自身的行为。比如,以编程方式输出著名的斐波纳契数列。[线性递归和尾递归。]

  

第四章 Map,Filter 和 Reduce

Map

Map会将一个函数映射到一个输入列表的所有元素上 

map(函数名, 数组, [数组], [数组]...),数组数量要和函数中的传递参数的数量所对应。

map还可以和匿名函数组合,如:list(map(lambda x: x*2, 数组))

匿名函数其实就是没有命名的函数,lambda后的x其实就是传递的参,x*2就是返回的值。

Filter

filter过滤列表中的元素,并且返回一个由所有符合要求的元素所构成的列表,即改元素的返回值为True。

Reduce

当需要对一个列表进行一些计算并返回结果时,Reduce 是个非常有用的函数。举个例子,当你需要计算一个整数列表的乘积时。

from functools import reduce
product = reduce( (lambda x, y: x * y), [1, 2, 3, 4] )

# Output: 24

  

第五章 set(集合)数据结构

set与列表(list)的行为类似,区别在于set不能包含重复的值。

some_list = ['a', 'b', 'c', 'b', 'd', 'm', 'n', 'n']
duplicates = set([x for x in some_list if some_list.count(x) > 1])
print(duplicates)
### 输出: set(['b', 'n'])

取交集

valid = set(['yellow', 'red', 'blue', 'green', 'black'])
input_set = set(['red', 'brown'])
print(input_set.intersection(valid))
### 输出: set(['red'])  

 取差集

valid = set(['yellow', 'red', 'blue', 'green', 'black'])
input_set = set(['red', 'brown'])
print(input_set.difference(valid))
### 输出: set(['brown'])


第六章 三元运算符

 

第七章 装饰器

 

第八章 Global和Return

global可以定义一个全局变量

python中的return可以返回多个值

 

第九章 对象变动(Mutation)

每当你将一个变量赋值为另一个可变类型的变量时,对这个数据的任意改动会同时反映到这两个变量上去。新变量只不过是老变量的一个别名而已。这个情况只是针对可变数据类型。

 

第十章 __slots__魔法

 __slots__可以对class指定属性,如果使用指定外的其他属性就会报错。

子类不会继承父类的__slots__属性,每个子类需要重新定义__slots__属性。

posted on 2019-10-30 18:27  Q同码  阅读(189)  评论(0编辑  收藏  举报