一、全局变量和局部变量

全局变量,即可以在当前文件所有地方都可使用的变量,一次修改,整个文件都影响。如果函数体内部使用全局变量,要先声明global

局部变量,只能在函数体内部使用,除了函数体就不可使用

比如:

局部变量

def function():
name=input('输入名字')#函数体内部声明的变量,是局部变量。作用区就只有function函数体内
print(name) print(name)#会报错,局部变量只在作用区内有效,出了作用区不可用

全局变量

name='' #全局变量
def function():
global name #声明一下的name用的是全局变量的name,修改的是全局变量name
name=input('输入名字')#函数体内部声明的变量,是局部变量。作用区就只有function函数体内
print(name)
function()
print(name)#打印出的是function函数设置后的name,全局变量被修改后,整个页面都受影响

二、函数

定义函数的关键字是def,函数定义好后,必须调用才可执行。函数定义可以带参数,也可以不带参数。可以返回值,也可以不返回值。

1、函数的定义:

不带参数:

def function():
print('不带参数的函数')
function()#调用函数

带必填参数:

def function(name)#带一个参数
  print(name)
function('小红')#调用,必须传参

带默认值参数,在调用时默认值参数可不传:

def function(name,age='')#age就是一个默认值参数
print(name+' '+age)
function('小红')#调用,age可传,也可不传

还可以用参数组来定义函数,不限参数个数。参数组是必填参数

def function(a,*args):    #*args代表一个参数组,可以传递任意个参数,以list形式使用
print(a)
print(args[0])
print(args[1])
print(args[2])
function('a','',2323,12)#第一个参数a时必须传的,后面的参数可不限定个数,但至少传1个

关键字参数,非必填.关键字参数也可传任意个参数,不固定参数个数

def function(t,**k):
print(k)#最终打印出来是一个字典。关键字参数传入的参数放在了字典里
print(t)
function('sdf')#关键字参数可不传参,此时打印出来的k=sdf,k是{}
function(name='nhy',age=38,time='')#第一个参数t必须传值,此行会报错
function(t=2018,name='aa',age=38)#可以指定t=2018,后面的参数传入k

带返回值的函数:用return。如果return后什么都不跟,则返回None。注:只要见return,函数结束

def function():
num=int(input('输入一个数字').strip())
if num%2==0:
return True
else:
return False
t=function()#函数有返回值,可用一个参数保存
if t:
print('偶数')
else:
print('奇数')

2、函数的调用

函数定义以后,必须调用才可执行。只是定义没有调用的话,函数是不执行的

函数的调用直接写函数名和参数就可:function(),function('ddd')

函数的递归调用:

递归调用就是函数自己调用自己,比如

def function():

  print('自己调用自己')

  function()#调用自身

function()

3、函数返回值

函数可以有返回值,也可以没有返回值。可以有一个或多个返回值。函数的返回值可以用参数来接收。

函数返回多个返回值:

  (1)返回多个返回值,默认是用有给元祖接收

  (2)返回多个返回值,也可用多个参数接收

def function():
name='aa'
age=18
sex='nv'
return name,age,sex
stu=function()#此时stu打印出来就是元祖(name,age,sex)
name,age,sex=function(0#可以用多个参数接收多个返回值

new_num = [ str(num).zfill(2) for num in red_num ] #列表生成式
l = [ i for i in range(1,101,2) ] #生成100以内的奇数,以空间换时间
#l2 = ( i for i in range(1,101,2) ) #生成100以内的奇数 #
#外面是小括号的话,它就不是一个list了,它是一个生成器,
#生成器比list要节省内存,它是每次循环的时候,会根据规则计算一个元素,放到内存里面
#list它是把所有的元素都放在内存里面的

lambda
匿名函数
lambda x: x+1 #冒号后面的是函数体,也是函数的处理逻辑,冒号前面的返回值

4、内置函数:python自带的一些函数,直接拿过来能用的

id() #看内存地址
type() #看数据类型
print() #打印
input() #输入
list() #转list
set()# 转集合
str()#转字符串
dict()#转字典
int()#转int
float()#转float类型
len()#取长度
dir() #帮助你的
sorted()#排序
round(11.00011,2)#保留几位小数

print(all([1,2,3,4]))#判断可迭代的对象里面的值是否都为真
print(any([0,1,2,3,4]))#判断可迭代的对象里面的值是否有一个为真
print(bin(10))#十进制转二进制
print(bool(None))#把一个对象转换成布尔类型
print(chr(69))#打印数字对应的ascii
print(ord('E'))#打印字符串对应的ascii码
print(dir(d))#打印传入对象的可调用方法
exec('def a():print("我是a")')#执行python代码 #eval也是用来执行python代码的,只能执行一些简单的代码,比如运算,[] {}
a = eval('1+2')
print(a) print(filter(lambda x:x>5,[12,3,12,2,1,2,35]))#把后面的迭代对象根据前面的方法筛选
print(map(lambda x:x>5,[1,2,3,4,5,6]))
print(max(111,12))#取最大值
print(min((1,2,3)))#取最小值
print(abs(-1))#取绝对值的
print(round(11.119999,3))#取几位小数
print(sorted([2,31,34,6,1,23,4]))#排序

最新文章

  1. MySQL学习笔记一:常用显示命令
  2. 十大经典排序算法总结(JavaScript描述)
  3. Excel 读写程序 C#源代码下载
  4. iOS 中CoreData的简单使用
  5. 【leetcode】Reverse Integer
  6. 如何解决""No boot device available(无可用的引导设备)”错误
  7. HttpRequest重写,解决资源战胜/链接超时/分块下载事件通知 问题。
  8. Oracle SQL Developer连接报错(ORA-12505)
  9. 【Timers】win服务 定时器
  10. The performance between the 'normal' operation and the 'shift' operation.
  11. 绑定网关mac,防arp攻击
  12. Android应用程序更新并下载
  13. 【漏洞分析】dedecms有前提前台任意用户密码修改
  14. 04_查看Android内存使用情况
  15. 被BAT疯抢的工程师,都是怎么拿到50万年薪Offer的?
  16. MYSQL与TiDB的执行计划
  17. numpy行转列
  18. java 随机抽取案例,不重复抽取
  19. numpy 数据处理
  20. MyBatis入门(二)—— 输入映射和输出映射、动态sql、关联查询

热门文章

  1. 轻音少女K-on闹钟,时钟,日历,整点报时
  2. Mybatis-02-CRUD及配置解析
  3. GUAVA-ListenableFuture实现回调
  4. 【支付宝SDK】沙箱调试,以及遇到的坑
  5. JVM的方法执行引擎-模板表
  6. Markdown实验样例
  7. pytest封神之路第一步 tep介绍
  8. Python网络爬虫与信息提取笔记
  9. Scala中做简易wordCount
  10. Hadoop的源码编译