python基础内容重新理解之函数
2017-03-10 20:59
375 查看
最近写了个简单的python爬取新浪NBA球员数据的小脚本。虽然编写函数,创建类和对象什么的都没什么问题,但是却不能正确了解其中的正确关系。self代表什么?为什么有的函数名字之前会加上__双下划线?是时候重新了解一下什么是真正的面向对象的技术了!
为什么存在?
所谓存在即有理,函数是程序员们为了偷懒而设计,目的是讲具有相同的操作或者能够达到相同的目的的操作同一起来,抽象之为函数。
函数的创建!
普通创建:def methodA(): 函数名一般规范为第一个单词小写,其余单词首字母大写,如getName()
装饰器创建。
函数的参数:
形参:只是传递作用,存在必选参数,默认参数,魔法参数,组合参数
实参:传递进去的实际有值得参数
魔法参数:注意输出时没有*号,一个*是尽可能的收集其余参数返回元组,**是尽可能的收集其余参数返回一个字典。例如requests模块的requests(url,**kwargs)
def getName(name,*n,**m): a = name print(a,n,m) getName('zhao',1,2,3,key1='value1',key2='value2') #zhao (1, 2, 3) {'key1': 'value1', 'key2': 'value2'}
函数的返回值:所有函数都有返回值,可能是你reduce的或者None
函数中变量的作用域:
一个变量在函数中,只在该函数起作用,称为全局变量。在全类中起作用,被称作全局变量。
相互调用: 声明一个全局变量global x 则x为全局变量。调用局部变量 nonlocal不常用。
递归:函数调用自身。常见在幂运算和迭代中,以后详细介绍。实例:二分法(bisect模块实现)
函数式编程:几个函数
map(函数,列表),作用是将列表中每个元素的值传入函数中,并返回一个列表
a = map(str,range(10))
print(list(a))
#['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']filter(函数,列表),将列表中没给元素依次传入函数中。这个函数必须是基于布尔类型返回值的,通过这个函数进行对元素的过滤。isalnum()判断字符串是否全有字母数字组成
b = ['dsasd','123','ass2','##@']
def func(x):
return x.isalnum()
f = filter(func,b)
print(list(f))
#['dsasd', '123', 'ass2']
reduce(函数,列表) 作用是将列表中前两个元素传入到函数中,并将返回值继续与第三个参数传入函数中。
from functools import reduce
def add(x,y):
return x+y
c = reduce(add,range(10))
print(c)
#45
由这几个函数的扩展:
列表推导式: x for x in b if x.isalnum() 与filter(func,b)相同
str(i) for i in range(10) 与 map(str,range(10))相同
求和:In [12]: sum(range(10))
Out[12]: 45
以上全部为简单零碎只是,算是《python基础教程》的读书笔记,毕竟理解了才算是自己的
在后来更加抽象时再增添函数的特性。如函数名.__doc__返回的是函数的注释
相关文章推荐
- Python之路【3】:Python基础(二) 函数的理解
- Xman整理篇___关于Python的基础内容(函数)
- CDays-2 习题一 (改进函数)及相关内容解析。Python 基础教程
- python基础===通过菲波那契数列,理解函数
- python 一篇就能理解函数基础
- Python基础(3):函数
- arm 基础:可重入函数与不可重入函数的理解
- python基础31[__XXX__函数]
- 关于函数指针的一些理解与其他相关内容的联想
- 基于文本内容理解的中医药数据基础研究——中医药文献语料库的建设
- CDays–3 通过函数进行功能化 Python基础教程
- C基础知识之理解指向函数的指针
- 基于文本内容理解的中医药数据基础研究——中医药文献语料库的建设
- CDays-3 习题三 (八皇后问题)及相关内容解析。Python 基础教程
- python 函数基础
- python基础(3)-函数
- Python基础07 函数
- python基础1--函数
- 基于文本内容理解的中医药数据基础研究——中医药文献语料库的建设
- [Python入门及进阶笔记]Python-基础-函数小结