python基础五(函数、全局变量和局部变量)
一、全局变量和局部变量
全局变量,即可以在当前文件所有地方都可使用的变量,一次修改,整个文件都影响。如果函数体内部使用全局变量,要先声明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]))#排序
python基础五(函数、全局变量和局部变量)的更多相关文章
- Python新手学习基础之函数-全局变量和局部变量
全局变量和局部变量 我们通常把定义在函数外的变量成为全局变量,定义在函数内的变量称为局部变量,顾名思义,全局变量的作用域是整个代码段,局部变量的作用域就只是在它所属的代码段,变量只在它的作用域里有效. ...
- python基础之函数详解
Python基础之函数详解 目录 Python基础之函数详解 一.函数的定义 二.函数的调用 三.函数返回值 四.函数的参数 4.1 位置参数 4.2 关键字参数 实参:位置实参和关键字参数的混合使用 ...
- python基础——返回函数
python基础——返回函数 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_ ...
- python基础——匿名函数
python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...
- python基础——sorted()函数
python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个d ...
- python基础——filter函数
python基础——filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...
- python基础——匿名函数及递归函数
python基础--匿名函数及递归函数 1 匿名函数语法 匿名函数lambda x: x * x实际上就是: def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x ...
- 八. Python基础(8)--函数
八. Python基础(8)--函数 1 ● 函数返回布尔值 注意, 自定义的函数也可以是用来作逻辑判断的, 例如内置的startswith()等函数. def check_len(x): ' ...
- python基础:函数传参、全局变量、局部变量、内置函数、匿名函数、递归、os模块、time模块
---恢复内容开始--- 一.函数相关: 1.1位置参数: ef hello(name,sex,county='china'): pass #hello('hh','nv') #位置参数.默认参数 1 ...
随机推荐
- Golang | 既是接口又是类型,interface是什么神仙用法?
本文始发于个人公众号:TechFlow,原创不易,求个关注 今天是golang专题的第12篇文章,我们来继续聊聊interface的使用. 在上一篇文章当中我们介绍了面向对象的一些基本概念,以及gol ...
- set学习记录
set是STL中的集合容器,其中每个元素都互不相同,并且都是以递增的形式排列. set只能使用迭代器访问. 说一下常用函数: 1.insert(x):插入函数用于把x插入set. 2.find(val ...
- google protocol buffer——protobuf的基本使用和模型分析
这一系列文章主要是对protocol buffer这种编码格式的使用方式.特点.使用技巧进行说明,并在原生protobuf的基础上进行扩展和优化,使得它能更好地为我们服务. 1.什么是protobuf ...
- Java中对象和对象引用的区别,引用、指向是什么意思
Java的变量分为两大类:基本数据类型和引用数据类型. 其中基本类型变量有四类8种:byte short int long float double char boolean,除了8种基本数据类型变量 ...
- Android java.lang.SecurityException: Permission Denial
报错: java.lang.SecurityException: Permission Denial: starting Intent { act=android.media.action.IMAGE ...
- 记录一次idae和maven设置的巨坑
这个忽略pom.xml文件千万别勾选,不然会导致项目的pom.xml怎么填写都无法导入新的依赖包!
- ClickHouse 参数配置
转载自:https://xw.qq.com/cmsid/20200806A0PQ7X00?ADTAG=amp 在 ClickHouse 进程中,CPU 的主频越高越好,通常建议使用 32 以上的机型, ...
- On the Convergence of FedAvg on Non-IID Data
郑重声明:原文参见标题,如有侵权,请联系作者,将会撤销发布! arXiv:1907.02189v2 [stat.ML] 8 Oct 2019 Abstract 联邦学习使得大量的边缘计算设备在不共享数 ...
- Selenium的WebDriver API元素定位中的XPath和CSS
元素的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上的. 浏览器的常规操作 import time from selenium import webdriver # 打开浏览器 dr ...
- 从《三体》到“中美科技战”,3分钟理解“网络”D丝为什么要迎娶“算力”白富美
摘要:在多维的世界里,高维的文明对于低维文明具有碾压的优势,而网络也正在从二维走向三维!网络硬件的竞争主要是“芯片+算法”. 从三体到中美科技战,理解网络与算力深度融合助力高维度竞争 1:对抗封锁,需 ...