Python函数分类

a,内置函数

b,自定义函数

c,导入函数

一个函数就相当于一个功能块,比如获取数据库,更新数据库,函数其实就是代码的分块,调用函数来执行代码块

一块就代表一个功能

内置函数有以下这些

vars() 当前模块的所有变量

>>> vars()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, 'nama': 'alex', '__package__': None}

__doc__  :注释内容

比如

>>> import Queue
>>> print Queue.__doc__
A multi-producer, multi-consumer queue

__name__ 被执行的脚本__name__值等于main 其他的等于本身

使用main来标示这个程序的主模块是哪一个

if  __name__=="__main__"  #这个文件就是程序的主文件,主函数

  xxx                              #执行xxx

reload()如果一个模块导入(import)一次就常驻内存,假如一个模块修改了需要重新导入一次使用reload()重新加载

id()记录内存地址

is 比较地址

计算级别

cmp(2,3)比较

abs()计算绝对值

bool()计算布尔值

divmod(10,3)求商和余数分页

max()取最大

min()去最小

sum()求和

pow()求幂

len()计算序列长度

all()接收一个序列,判断所有值都是真的返回真,否则返回假

例如

>>> li =[1,2]
>>> all(li)
True
>>> li =[1,2,""]
>>> li
[1, 2, '']
>>> all(li)
False

any()只要有一个是真就返回真

chr()接收一个数字转出字符码

ord() 接收一个值转化成数字

hex()10进制转换成16进制

oct()10进制转换成8进制 

bin()10进制转换成2进制

>>> hex(13)
'0xd'
>>> oct(12)
'014'
>>> bin(8)
'0b1000'

range()按顺序生成序列

xrange()生成器生成序列

enumerate()

用法

>>> for k,v in enumerate(li):
... print k,v
...
0 11
1 22
2 33
3 44
4 55

循环序列自动生成下标对应value,想要从1开始在li后面加参数1指定数字的起始值

其他

内置函数是无法满足需求的

自定义函数

面向过程的编程假如需要实现同样的功能是通过复制代码来实现,面向函数编程可以通过定义函数,然后调用函数.

函数的返回值

1,未明确指定返回值,返回None

2,返回值可以赋值给某个变量

参数:

  普通参数

  默认参数

  动态参数

#形式参数,形参

#实际参数,实参

动态参数

>>> def func(*arg):
...    print arg
...
>>> func()
()
>>> li=[1,2]
>>> func(1)
(1,)
>>> func(1,2)
(1, 2)
>>> func(li)
([1, 2],)

不管收到什么参数都整合成元祖

非动态参数燕严格按照定义输入参数个数

>>> li=(1,2,3,4)
>>> func(li)
((1, 2, 3, 4),)
>>> func(*li)
(1, 2, 3, 4)

只把参数放入生成一个元祖中的元祖,前面加*就是原来的元祖(列表也是类似的结果),对于字符串效果一样

小结

1,接受多个参数

2,内部自动构造元祖

3,序列,*,避免内部构造元祖或列表

>>> def func(**kwargs):
...    print kwargs
...
>>> func(**li)
{'1': 'a', '2': 'b'}

定义时候加**生成字典,传递参数的时候也要加2个*

也可以直接在函数传递参数的时候使用key=value的方式来传递

>>> func(k1=123,k2=454)
{'k2': 454, 'k1': 123}

定义一个又可以传递单值的有可以传递字典的函数

>>> def func(*args,**keargs):
...    print args
...    print keargs
...
>>> func(1)
(1,)
{}
>>> func(1,2)
(1, 2)
{}
>>> func(k1=123,k2=999)
()
{'k2': 999, 'k1': 123}

看一下格式化列子,类似于动态传参

>>> s = "i am {0},age{1}"
>>> s.format('alex','18')
'i am alex,age18'
>>> s = "i am {name},age{age}"
>>> s.format(name='alex',age='18')
'i am alex,age18'

Python之函数知识的更多相关文章

  1. python基础-基础知识(包括:函数递归等知识)

    老男孩 Python 基础知识练习(三) 1.列举布尔值为 False 的值空,None,0, False, ", [], {}, () 2.写函数:根据范围获取其中 3 和 7 整除的所有 ...

  2. python编程语言 函数的形参

    python编程语言 函数的形参的讲解: 我在交互模式中写了个函数: def adder(**args): sum=0 for x in args.keys(): sum+=args[x] retur ...

  3. 【Python】 零碎知识积累 II

    [Python] 零碎知识积累 II ■ 函数的参数默认值在函数定义时确定并保存在内存中,调用函数时不会在内存中新开辟一块空间然后用参数默认值重新赋值,而是单纯地引用这个参数原来的地址.这就带来了一个 ...

  4. python数组相关知识

    1.np中的reshape函数,可以把矩阵重新划分成m行n列. arange(n)可以把 [0,n-1]装入数组中,一定要注意的是img.reshape()并不会改变原来的数组,所以需要另外新建一个数 ...

  5. 零基础学python之函数与模块(附详细的代码和安装发布文件过程)

    代码重用——函数与模块 摘要:构建函数,创建模块,安装发布文件,安装pytest和PEP 8插件,确认PEP8兼容性以及纠错 重用代码是构建一个可维护系统的关键. 代码组是Python中对块的叫法. ...

  6. Python总结篇——知识大全

    python基础 Python开发环境搭建 Python变量和基本数据类型 python基本数据类型之操作 python的语法规范及for和while python编码 python文件操作 pyth ...

  7. Python从零开始——函数

    一:Python函数知识概览 二:函数的定义与调用 三:参数传递 四:函数返回值 五:匿名函数的定义与调用 六:变量作用域与改变变量作用域

  8. python易错知识集合

    本篇用于记录在写leetcode时遇到的python易错知识. 2019.8.29 1.Python range() 函数用法: range(start, stop[, step]) start: 计 ...

  9. Python初识函数

    Python初识函数 函数理论篇 什么是函数 在编程语言中的函数不同于数学中的函数.不管是数学上的函数还是编程语言中的函数都是为了完成特定的某一功能而诞生的,他们的区别在于: 1.数学中的函数当输入的 ...

随机推荐

  1. PHPCMS二次开发——对栏目可用 limit 限定获取

    为了实现类似用limit调用栏目,故自定义了mylimit(这里不能用limit,因为系统在解析的时候会覆盖,所以自定义的limit就起不到作用) 参数,例如: {pc:content  action ...

  2. 解决在eclipse中写ImageView时有警告的问题

    Eclipse中写了一个android程序其中main.xml中ImageView哪行是个黄叹号!不知道为什么? 解决办法: android:contentDescription="@str ...

  3. ng2响应式表单-翻译与概括官网REACTIVE FORMS页面

    本文将半翻译半总结的讲讲ng2官网的另一个未翻译高级教程页面. 原文地址. 文章目的是使用ng2提供的响应式表单技术快速搭出功能完善丰富的界面表单组件. 响应式表单是一项响应式风格的ng2技术,本文将 ...

  4. HTTP协议(四)

    第一步:新建一个header.php页 <?php header('Location:http://www.baidu.com');//默认是302重定向 ?> 第二步:分析 如何制定重定 ...

  5. Java单例模式再加强——按组多单例

    最近要使用alibaba的rocket mq(我们公司对其进行了封装,使其运行在dotNet平台上,Java还是和原生的差不多,涉及公司的内容本文不会提及),其中 在生产者组这一块,建议是用单例模式的 ...

  6. jmeter配置、安装

    一. 工具描述 apache jmeter是100%的java桌面应用程序,它被设计用来加载被测试软件功能特性.度量被测试软件的性能.设计jmeter的初衷是测试web应用,后来又扩充了其它的功能.j ...

  7. iOS 开发遇到 调不起相机问题

    在iOS 开发中 使用html 中的input 标签调起工程里面的相机,手机无反应 1.先看看info.plist 加没加相机的权限,添加Privacy - Camera Usage Descript ...

  8. 使用VB6写一个自定义的进度信息框窗口

    一.起因说明 之前有些项目是用Access完成的,当时为了给用户显示一些进度信息,自制了一个进度信息窗体,类似下图所示: 随着项目不断变迁,需要将进度信息按阶段及子进度进行显示,并且出于代码封装的需求 ...

  9. 手机自动化测试:appium源码分析之bootstrap五

    手机自动化测试:appium源码分析之bootstrap五   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.poptest测试 ...

  10. 老李推荐:第1章3节《MonkeyRunner源码剖析》概述:架构

    老李推荐:第1章3节<MonkeyRunner源码剖析>概述:架构   原理架构 MonkeyRunner使用起来非常的简单,只需要导入以下几个类基本上就能满足测试脚本编写的需求,比如: ...