为什么使用函数?
答:函数的返回值可以确切知道整个函数执行的结果
 
函数的定义:1、数学意义的函数:两个变量:自变量x和因变量y,二者的关系
                     2、Python中函数的定义:函数是逻辑结构化过程化得编程方法
定义面向过程:过程 def ( 在Python中,过程是没有返回值的函数)

  1. #定义函数
  2. def func1():
  3. """testing"""
  4. print('in the func1')
  5. return 0
  6.  
  7. #定义过程
  8. def func2():
  9. """testing2"""
  10. print("in the func2")
  11.  
  12. #调用函数
  13. x=func1()
  14.  
  15. #调用过程
  16. y=func2()
  17. print("from func1 return is %s "%x)
  18. print("from func2 return is %s "%y)

传参:

1.默认参数特点:调用函数时,默认参数可有可无,非必须传递。传递后可以修改默认值,不传递则按照默认值输出
用途:1.默认安装  2.数据库连接,默认端口号

def test(x,y=2): print(x) print(y) test(1,3) 此处设置y默认为2,调用时可以不传值。

2.关键字调用 print(y=2,x=1) 
 输出结果 1,2  与形参位置无关。 与形参数量必须匹配
 
 
3.位置参数调用:与形参的位置一一对应赋值print(1,2)  1,2
 
4.二者混用,按照位置参数调用来
关键参数不可以写在位置参数前面
 
5.(非固定参数)参数组:调用时,超过或少于形参的的数量个数,则报错
 
#实参的数量不固定的情况下,则形参如何定义?
共有两种方式
元祖形式及混合形式:
  1. #实参的数量不固定的情况下,则形参如何定义?
  2. #方法一
  3. def test(*args):
  4. print(args)
  5. test(1,2,3,4,5)
  6. #方法二
  7. test(*[1,2,3,4,5])#*args=*[1,2,3,4,5] *args 接受n个位置参数,结果以元祖形式输出
  8. #位置参数和参数组结合起来定义
  9. def test(x,*args):
  10. print(x)
  11. print(args)
  12. test(1,2,3,4,5,6,7)

位置参数和参数组结合,输出结果是1,(2,3,4,5,6,7).按照定义类型进行传参

test(tuple[1,2,3,4,5])    报错:'type' object is not subscriptable  “类型”对象不可下标  语法错误。
 
 字典形式及混合形式:
  1. #**kwargs 把关键字参数转换成字典的形式输出,接受n个关键字参数
  2. def test(**kwargs):
  3. print(kwargs)
  4. #结果从字典中只取出值来打印
  5. print(kwargs['name'])
  6. print(kwargs['age'])
  7. test(name='zhang',age=1,sex='women')#此处使用位置参数
  8. #直接以字典的形式输出
  9. '''**kargs test(name='zhang',age=1,sex='women')==
  10. test({name='zhang',age=1,sex='women'})#关键字的方式去赋值'''
  11. #字典和位置参数共用
  12. def test(name,age=1,**kwargs):#关键参数放到参数组前面
  13. #结果从字典中只取出值来打印
  14. print(name)
  15. print(age)
  16. print(kwargs)
(二)函数递归:函数在内部调用自己
  1.必须有明确的结束条件 
  报错: maximum recursion depth exceeded in comparison  超过最大递归次数(999)
  2.每次进入更深一层的递归时,问题的规模较上次都要有所减少
  3.递归的效率不高,递归的层次过多会导致溢出。(在计算机中,函数调用时通过栈这种数据结构实现的,每当进入一个函数调用,栈就会增加一层栈帧,每当退出一层函数调用,栈就会减少一层栈帧。由于栈的大小不是无限的,,所以函数调用次数越多,会导致栈溢出。)
 
 
函数分类:
函数式编程:纯函数式编程,无变量,只要输入是确定的,输出就是确定的
 
高阶函数:
变量可以指向参数,函数的参数能接收变量,那么一个函数就能够接收另一个函数作为参数,这种函数就成为高阶函数。
 
内置函数;
b=eval(b)  通过内置函数eval转成字典
附:
  Python的回收机制是解释器执行的,Python解释器中有引用计数。固定时间内会即时刷新,清空掉没有引用的内容。释放内存
  变量的内存回收机制:没有引用(定义了语句del,删除值的变量名),立马回收。否则直到程序结束才会回收。

Python函数分类及操作的更多相关文章

  1. Python基础:Python函数、文件操作、递归

    函数参数 函数参数包括位置参数,关键字参数,动态参数(*args, **args)三种. 传参的过程是形式参数的赋值. *args传入的参数是元组形式,**args传入的参数是字典形式. 示例代码如下 ...

  2. Day3 Python基础学习——文件操作、函数

    一.文件操作 1.对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过文件句柄对文件进行操作 关闭文件 #打开文件,读写文件,关闭文件 http://www.cnblogs.com/linha ...

  3. python系列3之内置函数和文件操作

    目录 自定义函数 内置函数 文件的操作 练习题 一. 自定义函数 1. 函数的创建 函数的创建 1.def关键字 2.函数名+() 3.冒号 4.缩进 5. return返回值,可以不写,默认的返回值 ...

  4. Python基础学习——文件操作、函数

    一.文件操作 文件操作链接:http://www.cnblogs.com/linhaifeng/articles/5984922.html(更多内容见此链接) 一.对文件操作流程 打开文件,得到文件句 ...

  5. day3-Python集合、函数、文件操作,python包的概念

    本节大纲: 1 python程序由包(package).模块(module)和函数组成.包是由一系列模块组成的集合.模块是处理某一类问题的函数和类的集合. 2 包就是一个完成特定任务的工具箱. 3 包 ...

  6. Python 函数基础、有序集合、文件操作(三)

    一.set 特点: set是一个无序且不重复的元素集合访问速度快:天生解决元素重复问题 方法: 初始化 >>> s1 = set()>>> print(type(s ...

  7. python day5 lambda,内置函数,文件操作,冒泡排序以及装饰器

    目录 python day 5 1. 匿名函数lambda 2. python的内置函数 3. python文件操作 4. 递归函数 5. 冒泡排序 6. 装饰器 python day 5 2019/ ...

  8. python函数知识

    一.三目运算 也叫三元运算,例如result=x if x<y else y 二.集合(set) 返回主页集合(set):把不同的元素组成一起形成集合,是python基本的数据类型.集合元素(s ...

  9. python函数、装饰器、迭代器、生成器

    目录: 函数补充进阶 函数对象 函数的嵌套 名称空间与作用域 闭包函数 函数之装饰器 函数之迭代器 函数之生成器 内置函数 一.函数补充进阶 1.函数对象:  函数是第一类对象,即函数可以当作数据传递 ...

随机推荐

  1. MAC 终端走代理服务器

    问题描述: MAC 终端,默认不走代理服务器:即浏览器已经可以FQ,但是终端不行: 解决方案:直接设置终端的代理,本文 用的是 shadowSocksX: 打开终端,直接执行:(执行后,只对当前终端起 ...

  2. 父网访问子网(校园网访问校园网IP路由器下的一台电脑)远程路由器下的电脑

    网路由器添加转发规则,端口转发,本人仅使用Pandora Box路由器固件 当然设置了这些还不够,还需要设置其他的允许端口转发的东西,例如 然后远程桌面的话还需要设置某些相关设置,例如电脑允许使用远程 ...

  3. Cookie写不进去问题深入调查 https Secure Cookie

    Cookie写不进去问题深入调查 https Secure Cookie 什么情形下,Cookie 会写不进去?https Secure Cookie像是语法错误那种显而易见的就不用说了,除此之外你可 ...

  4. uploadify上传图片的使用

    一:引用jquery.uploadify.js 二:代码 <body> <table> <tr> <td style="width: 15%; te ...

  5. Python爬虫与一汽项目【综述】

    项目来源 这个爬虫项目是 去年实验室去一汽后的第一个项目(基本交工,现在处于更新维护阶段).内容大概是,获取到全国31个省份政府的关于汽车的招标公告,再用图形界面的方式展示爬虫内容.在完成政府招标采购 ...

  6. 第十三节 Ajax基础

    什么是服务器:简单地,可以说服务器就是一个内存超大的计算机,可以存放很多数据和文件(当然,如果不需要太多的数据存储量,我们也可以用电脑.手机等一系列小型计算机作为服务器,只不过性能的差别而已) 网页浏 ...

  7. WebSocket 的理解

    WebSocket是HTML5开始提供的一种浏览器与服务器间进行全双工通讯的网络技术.依靠这种技术可以实现客户端和服务器端的长连接,双向实时通信. 它的最大特点就是,服务器可以主动向客户端推送信息,客 ...

  8. MySQL主从复制虽好,能完美解决数据库单点问题吗?

    一.单个数据库服务器的缺点 数据库服务器存在单点问题: 数据库服务器资源无法满足增长的读写请求: 高峰时数据库连接数经常超过上限. 二.如何解决单点问题 增加额外的数据库服务器,组建数据库集群: 同一 ...

  9. Exp5 MSF基础应用 20164303景圣

    一.实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 1.一个主动攻击实践,如ms08_067; (成功) 2.一个针对浏览器的攻击,如ms1 ...

  10. 剑指offer(65)矩阵中的路径

    题目描述 请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径.路径可以从矩阵中的任意一个格子开始,每一步可以在矩阵中向左,向右,向上,向下移动一个格子.如果一条路径经过了矩阵中 ...