函数的基本使用

一、python的函数
1、函数的定义

在Python中可以使用def关键字来定义函数,而函数执行完成后我们会通过return关键字来返回函数的执行结果。函数的作用在于将大量重复的代码封装起来,方便重复调用。

def get():
    print("不带参数")
get()   #不带参数

上面的例子就是一个简单的函数,并且该函数是不带参数的。

2、变量的作用域

变量起作用的范围称为变量的作用域,不同作用域内同名变量之间互不影响。变量分为全局变量和局部变量。

全局变量:在函数或类之外定义的变量,作用域从定义的位置开始到整个模块(也可以理解成py文件)结束。全局变量一般作为常量使用,即该变量是不变的。函数内要改变全局变量的值,需要使用 global 声明一下。

局部变量:在函数体内申明的变量,只在函数内起作用。

局部变量的查询和访问速度比全局变量快,优先考虑使用,尤其是在循环的时候。在特别强调效率的地方或者循环次数较多的地方,可以通过将全局变量转为局部变量提高运行速度。总而言之,在循环结构中尽量不定义变量(包括不定义方法)。比如在for循环里头需要使用time.sleep()进行暂停,这时可以现在循环外把暂停定义好,a=time.time,然后在循环内直接使用a(1),这样能使运行的速度提升很多

通过locals()和globals()函数可以打印出所有的局部变量和全局变量。

a=1 #全局变量
def get():
    b=2 #局部变量
    print(b)
    print(globals()) #打印全局变量
    print(locals())  #打印局部变量

get()

全局变量和局部变量的效率比较

import time
import random
def global_test():
    start=time.time()
    for i in range(10000000):
        a=random.randint(1,100)
    end=time.time()
    print("耗时{0}".format((end-start)))

global_test()  #耗时5.018017768859863

def local_test():
    start=time.time()
    a=random.randint
    for i in range(10000000):
        a(1,100)
    end=time.time()
    print("耗时{0}".format((end-start)))
 
local_test()  #耗时4.793867349624634

运行了好几次,结果都是下面的函数比上面的函数更省时间。

二、函数的参数
1、参数默认值

python函数可以没有参数,参数可以有默认值。带默认值的参数必须放在不带默认值的参数之后

def get(x,y,z=10):
    return x + y + z

#如果z没有指定数值,则默认为10
get(10,12)   #32
#z指定数值,则被赋值为11
get(10,12,11)  #33
2、不定长参数

不定长参数允许我们输入0或者任意个参数,当一个函数的参数不明确个数时,就需要使用不定长参数,不定长参数用*表示。

# 用星号表达式来表示args可以接收0个或任意多个参数
def get(*args):
    sum=0
    # 可变参数可以放在for循环中取出每个参数的值
    for i in args:
        sum+=i
    return sum

# 在调用get函数时可以传入0个或任意多个参数
print(get(1,2,3,4,5))

带参数名的不定长参数用**表示。

def get(**kwargs):
    sum=0
    
    # 字典类型
    print(kwargs)
    for i in kwargs.values():
        sum+=i
    return sum
print(get(a=3,b=4,d=5))
3、命名关键字参数

所谓命名关键字参数,就是写在号后的参数。它的作用在于在传入参数时必须以参数名=参数值的方式传参,并且不能传入号后面没有明确的参数。

def get(*,a,b):
    print(f"{a},{b}")
    
get(a=1,b=2)  #1,2
get(1,2)   #报错
get(a=1,b=2,c=3)  #报错

命名关键字参数可以跟不定长参数混合使用。

三、python中的内置函数

python中有一类函数,不需要我们去进行定义也不需要我们import进行引入就可以直接使用,称之为内置函数,这些内置函数都是很有用也是最常用的,下面的表格列出了一部分的内置函数。

函数说明
abs返回一个数的绝对值,例如:abs(-1.3)会返回1.3
bin把一个整数转换成以'0b'开头的二进制字符串,例如:bin(123)会返回'0b1111011'
chr将Unicode编码转换成对应的字符,例如:chr(8364)会返回'€'
hex将一个整数转换成以'0x'开头的十六进制字符串,例如:hex(123)会返回'0x7b'
input从输入中读取一行,返回读到的字符串。
len获取字符串、列表等的长度。
max返回多个参数或一个可迭代对象中的最大值,例如:max(12, 95, 37)会返回95
min返回多个参数或一个可迭代对象中的最小值,例如:min(12, 95, 37)会返回12
oct把一个整数转换成以'0o'开头的八进制字符串,例如:oct(123)会返回'0o173'
open打开一个文件并返回文件对象。
ord将字符转换成对应的Unicode编码,例如:ord('€')会返回8364
pow求幂运算,例如:pow(2, 3)会返回8pow(2, 0.5)会返回1.4142135623730951
print打印输出。
range构造一个范围序列,例如:range(100)会产生099的整数序列。
round按照指定的精度对数值进行四舍五入,例如:round(1.23456, 4)会返回1.2346
sum对一个序列中的项从左到右进行求和运算,例如:sum(range(1, 101))会返回5050
type返回对象的类型,例如:type(10)会返回int;而type('hello')会返回str

我的博客:https://blog.z7sz.top

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xingyuzhongxuan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值