ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python基础5-变量/递归函数/函数式编程/内置函数

2022-01-09 19:36:31  阅读:133  来源: 互联网

标签:函数 递归函数 python 编程 字符串 全局变量 变量 lambda


  • 全局变量与局部变量

  • 顶头定义,或者叫没有缩进的定义变量,就叫全局变量
  • 在子程序中要对全局变量做操作,则申明global 变量名
  • 如果函数的内容无global关键字,优先读取局部变量,没有的话再读取全局变量,无法对全局变量重新赋值,但是对于可变类型,可以对内部元素进行操作,例如append,clear
  • 全局变量全部大写,局部变量全部小写,代码规范
  • 函数可以嵌套函数,在嵌套函数中,用nonlocal name可以申明位name为外层函数的同名变量,而不是全部变量
  • 前向应用

  • 风湿理论,函数即变量,在函数语句运行之前,函数已经被申明即可执行。这点跟变量一样
  • 函数定义时不会执行,在内存中开辟地址,变量名为门牌号,函数内容被当作字符串存入门牌中
  • 递归

  • 编程方法论:函数式编程中没有循环,都是递归
  • 递归特性:必须有一个明确的结束条件,否则是死循环,直接报错。在函数内满足条件时,执行return语句
  • 列表可以用person_list.pop(0),弹出列表的第一个元素
  • 加上断点分析,debug
  • 作用域

  • 函数名相当于函数的内存地址,加上()才是函数
  • return 函数名,即返回一个函数地址,函数地址()即可执行函数。return 可以接任意参数
  • 想拿到函数执行的地址,就让a= f()
  • 函数的作用域在申明时已经决定,跟调用位置无关
  • 匿名函数

  • 用lambda x:x+1,第一个x是形参,x+1是函数的返回值
  • func = lambda x:x+1,然后func(9)即可执行
  • lambda应该跟其他函数一块用,而不是func = lambda的形式,如map函数
  •  其中x+1的位置,一般是简单逻辑,而不是for循环,if判断等
  • 返回多个值时,需要自己加括号,lambda x,y,z: (x+1,y+1,z+1)
  • 函数式编程

  • 语言是用来跟计算机沟通的
  • 编程方法论,面对过程,函数式编程,面向对象
  • 面向过程,把大问题分成小问题,找到解决问题的入口,按照一个固定的流程去模拟解决问题的流程
  • 函数式编程= 编程语句定义的函数+数学意义的函数。定义好数学模型y=2*x+1,用python函数实现上述数学模型。hasell clean erlang是严格意义上的函数式编程语言
  • 面向过程,def cal(x):res = 2*x  res+=1  return res
  • 函数式编程的特性:不定义变量,不修改变量,直接往下操作。
  • 函数即变量,函数名可作为参数传递,返回值可以是函数名,叫高阶函数,装饰器会用到
  • return test1(),即先执行tets1(),返回函数test1的执行结果
  • 调用栈,多层嵌套函数的情况下,上层没执行完就要进入下一层时,要保留上一层运行情况,等下一层执行完,再回来执行上一层,称为调用栈
  • 尾调用优化:在函数的最后1步调用另外一个函数,这样上一层函数就不用保留了,相当于直接转入下一个函数。最后1行不一定是最后1步,例如if else判断
  • map函数。map(lambda x:x+1,num_1),第一个位置传函数名,不带()。第二个位置传实参。map执行逻辑,遍历第二个实参,每个都交给第一个位置函数处理一遍。map返回结果是个迭代器,需要外套list可转换为列表
  • filter函数。filter(lambda n:not n.endwith('sb'),movie_people),第一个参数是函数,第二个参数是可迭代对象,把第二个可迭代对象可循环遍历,拿出每个元素交给前边函数筛选一遍,得到布尔值,为true则保留
  • reduce函数。from funtools import reduce,先导入。把一个序列进行合并操作。reduce(lambda x,y:x+y, num_1 ,1),1为初始值,把列表num_1中的值遍历,交给lambda函数累加一遍
  • python内置函数

  • all([1,2,'1',''])判断每个元素的布尔值,全部为真,则all返回true
  • any跟all相反,只要有一个为真,就为真
  • bin()转换为十进制二进制,hex是十进制转16进制,oct是转换8进制
  • 编程时就是写了字符串,要想保存到硬盘上就要编码。存到内存中用unicode,硬盘上自己选择编码。
  • name = ‘你好’,bytes(name,encoding='utf-8').decode(utf-8),将字符串按照utf-8编码,1个汉字占用3个字节,然后解码。ASCII码不能编中文
  • divmod(10,3)结果(3,1),分页功能。用在搜索结果分页上,10个搜索结果,每页3条,则需要3+1页面显示结果
  • evel()功能,1,把字符串的数据结构提取出来,例如从字符串包含字典中,提取出字典来。2,可以把字符串中的数学运算做一遍
  • hash运算,1不论输入多长,输出定长,2不能根据输出反推出输入。同样输入,输出一一定,可校验软件安装包是否安全
  • help(dir)获取函数的帮助文档。dir获取函数有哪些模块。
  • isinstance(1,int),判断1是否为int类型
  • print(globals()),打印出全局变量,locals打印出局部变量
  • print(_file_)打印出文件路径
  • zip(('a','b','c'),(1,2,3)),拉链函数,生成三个元组('a',1),左边一个对应右边一个。zip前后两个参数,只要是序列类型即可,元组,列表,字符串都是序列类型
  • max函数和min是一对。第一步:处理的是可迭代对象,相当于一个for循环取出每个元素进行比较。第二步,元素之间比较大小是从每个元素的第一个位置依次比较

  • 比较字典的value值大小时,先用zip函数生成新的元组序列,然后max即可。不同数据类型不能比较。
  • max(people, key=lambda dic:dic['age'],将字典people中元素遍历取出,每个调用一遍lambda函数,然后比较大小
  • chr(97)和ord('a')是一对
  • pow(3,3,2),3的3次方,对2取余数。如果只有两个,叫3的3次方
  • round(3.5)。四舍五入
  • slice(1,4,2),对字符串切片,左闭右开,步长为2
  • type()查看元素的数据类型
  • vars(),如果没有实参,则等效于locals,即局部变量。如果有实参int,则将实参int的所有方法存储为字典形式
  • import,模块就是py文件。import不能导入字符串,_import_()导入的就是字符串类型文件

标签:函数,递归函数,python,编程,字符串,全局变量,变量,lambda
来源: https://www.cnblogs.com/caesarone/p/15777936.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有