首页 > 编程语言 >python-函数

python-函数

时间:2022-10-31 16:44:53浏览次数:41  
标签:函数 python 元组 参数 print 全局变量 data

打算今天花三个小时学习一下python ,要不然强化学习的很多内容看不懂

一、参数

1.形式参数和实际参数

形式参数:定义函数的时候在括号中 的参数,在函数内部会使用这个参数进行代码的

编写;

实际参数:函数调用时传进来的参数,函数返回的结果根据这个实际参数来代替形式参数

>>> A = 30
>>> def get_salary(days):
...     salary  = days * 300
...     print(salary)
...
>>> get_salary(A)
9000

 days:形式参数  A是实际参数

2.位置参数

创建函数的时候可以在括号中定义多个形式参数,我们在调用的时候,参数的数量和位置需要和创建的时候保持一致;

如果传入参数的位置不一样的时候,会出现两种错误,一种是直接报错,因为在传参的时候根据参数的性质而定义不同的类型,如果传入的参数的数据类型是对的,但是位置错的,就会出现错误的输出结果。

3.关键字参数

  为了提高程序的可读性,在函数调用的时候还可以使用关键字参数调用。

>>> def volume(length,width,height):
...     volume = length * width * height
...     print('体积为:',volume)
...
>>> volume(length=20,width=30,height=3)
体积为: 1800

 关键字参数的位置不同不影响使用结果

4.参数默认值

  在定义一个参数的时候,可以给函数的参数定义一个初始值,在调用参数的时候如果没有给出实际参数,函数就会默认使用初始值

>>> def volume(length=100,width=100,height=10):
...     volume = length * width * height
...     print(volume)
...
>>> volume()#不给出实际参数的时候会使用默认参数100000
>>> volume(10,10,10)#给出实际参数会传递实际参数给出输出结果
1000

 5,函数中的可变参数

可变参数就在在传递的时候参数的个数是可变的

如果在参数前面加*,这种方式的可变参数在传递的时候以元组的方式传递

如果在参数面前加**,这种方式的可变参数在传递的时候是字典

一*元组二*字典

>>> def add_number(*number):
...     add_num = 0
...     for i in number:
...             add_num += i
...     print(add_num)
...
>>> add_number(1,2,3,4,5)
15

 所以在使用可变参数的时候,可以用遍历或者索引值的方式进行使用

参数在函数中非常重要!!!!!!!!!!!!!

 

二、返回值

函数在被调用的时候,函数中的内容会依次进行执行,但是有时候需要从这个执行后的函数中获取一些变量,因此在使用函数的时候增添一个返回值来获取函数中的一些数据。

1.语法结构

Python中关于返回值需要使用return语句,它的语法结构:

return data

 

def get_sum(a,b):
    sum = a + b
    print('调用了这个函数')
    return sum
    print('完成返回值的传递')
s = get_sum(1,2)
print(s)

 输出结果:

调用了这个函数
3

   语句s=get_sum(1,2)中,显示调用get_sum的函数,然后在函数顺序往下执行时,到了return语句之后,return会将sum的值赋给s,幅值之后,函数里return之后的句子不再执行。

2.多值返回

在返回多个值时,多个值是被存储在元组中的

def get_data():
    a = 1
    b = 2
    c = 3
    d = 4
    return a,b,c,d
print('返回值的类型:',type(get_data()))
print('返回值:',get_data())

 

返回值的类型: <class 'tuple'>
返回值: (1, 2, 3, 4)

 可以对上面的数据直接进行使用:

返回值的类型: <class 'tuple'>
返回值: (1, 2, 3, 4)

 

1 2 3 4

 对元组可以通过循环的方式打印出返回值:

for i in get_data():
    print('这是返回的第%d个数据'%i)

 返回值在函数中非常重要!!!

 

三、变量的作用域

变量的作用域指的是一个变量能够有效的区域,因为我们在使用函数的时候,有的变量是在主程序中定义的,有的是在调用的函数中定义的,当我们的主程序使用函数中定义的变量时,就会出现异常。

1.局部变量

作用在局部区域的变量,如果是在函数中定义的变量,那么就只在函数中起作用,如果在函数外部使用函数内部的变量,就会出现异常。

def test():
    data = '局部变量'
    print('在函数内部输出data为:',data)
test()
print('在主程序中输出data:',data)

 

在函数内部输出data为: 局部变量
Traceback (most recent call last):
  File "C:/Users/轻烟/PycharmProjects/untitled/venv/Include/ts.py", line 6, in <module>
    print('在主程序中输出data:',data)
NameError: name 'data' is not defined

 由于变量data是在函数内部定义的,我们在主程序中使用变量data则会出现访问的变量不存在的问题。

2.全局变量

  1) 在主程序中定义全局变量

我们在主程序中定义的变量的作用域是全局的,我们在定义的函数中也是可以直接使用这些变量:

data = '全局变量data'
def test():
    print('这是作用在函数中的全局变量:',data)
test()
print('这是作用在函数外的全局变量:',data)

 输出结果:

这是作用在函数中的全局变量: 全局变量data
这是作用在函数外的全局变量: 全局变量data

   在主程序中定义的变量可以在函数内部直接进行使用

2) 使用global关键字

我们在函数内定义的变量也可以编程全局变量,这时候我们就要使用到global关键字。

data = '这里是全局变量data'
print(data)
def test():
    global data
    data = '这里是局部变量data'
    print(data)
test()
print('再检查一下全局变量data:',data)

 

这里是全局变量data
这里是局部变量data
再检查一下全局变量data: 这里是局部变量data

 通过global关键字,在局部中声明告诉这个函数global是一个全局变量,那么修改了之后,全局中的变量都做了修改,global关键字就是可以使一个变量变成全局变量。

所以说从上面这个例子可以看出来,当函数中的变量名和全局中一样时,用global声明局部变量为全局变量,该局部变量会替代全局变量。

 

四、匿名函数

匿名函数对于数据筛选非常重要,它能够很快的帮助我们来解决数据复杂繁琐的问题,同时它可以优化我们的代码,使得代码的整体更为简洁。

1.匿名函数的定义

我们通过一个例子来介绍一下lambda函数的简单使用,变量m为我们输入的值,我们需要采用匿名函数来返回m的平方和,也就是输入2要返回值为4。

 

m = int(input('请输入一个数字:'))#m为输入的值
a = lambda x : x * x #使用变量a来构成一个表达式
print('返回值为:',a(m))

 

请输入一个数字:6
返回值为: 36

 

 

 

m = int(input('请输入一个数字:'))#m为输入的值
a = lambda x : x + 10 * 10 + x * x
print('返回值为:',a(m))

 

请输入一个数字:5
返回值为: 130

 通过上面两个例子我们可以了解到lambda表达式等同于把函数压缩为一行代码,然后通过变量的定义直接来调用这个函数,这种方式可以简化我们的代码。

2.序列调用匿名方法

我们在序列中同样可以使用匿名函数,使用匿名函数可以帮助我们进行很快的数据筛选,看下面的例子:

已知一个列表为[1,4,6,9,12,23,25,28,36,38,41,56,63,77,88,99],我们需要返回它里面的偶数并存放在列表当中。

我们可以使用filter函数来进行过滤。

代码如下:

my_list = [1,4,6,9,12,23,25,28,36,38,41,56,63,77,88,99]
print(list(filter(lambda x : x % 2 == 0,my_list)))

 输出结果:

[4, 6, 12, 28, 36, 38, 56, 88]

 filter()函数中的对象前者为我们的筛选方式,后者为我们要筛选的对象,然后我们把这些数据使用list()函数存放在了列表当中,最后打印出来,这种方式可以帮助我们很快的进行数据的整合。

我们在进行排序的时候也可以通过匿名函数来制定规则。

首先我们已知一组列表为[('元组甲',15,33),('元组乙',25,26),('元组丙',7,7)],列表中每个元素中的元组中包含每个元组的名字和最小值以及最大值,我们要根据每个人的元组最大值和最小值的差值来将列表进行排序,看下面代码:

my_list = [('元组甲',15,33),('元组乙',25,26),('元组丙',7,7)]
my_list.sort(key=lambda x : x [2] - x[1])#使用key关键字来引入排序方式,排序方式根据第三个元素减去第二个元素的差值,对应索引为2和1
print(my_list)

 输出结果:

[('元组丙', 7, 7), ('元组乙', 25, 26), ('元组甲', 15, 33)]

 

标签:函数,python,元组,参数,print,全局变量,data
From: https://www.cnblogs.com/bokeyuanjj/p/16844854.html

相关文章

  • 随机化算法解决圆排列问题 - python解法
    问题描述给定n个大小不等的圆,现要将这n个圆排进一个矩形框中,且要求各圆与矩形框的底边相切。圆排列问题要求从n个圆的所有排列中找出有最小长度的圆排列。例如,当n=3,且所给......
  • python中*的用法
    python中*是非常常见的一个运算符,它主要有以下几个功能:乘法运算符;函数形参表示可变参数;函数实参代表tuple;序列解包为tuple;zip解包运算;参考资料:​​Python3*和**运算符​......
  • python多继承及其super的用法
    python也具有多继承的功能,而同样的,大家能想到多继承必须要引入一些特定的方法来准确调用子类或基类的重载、重写的方法,否则会出现混乱。本文参考​​Multipleinheritance......
  • python中的round
    参考资料:​python的round函数使用​​python的round函数作用是四舍五入,其函数定义如下:round接收两个参数,第一个是数字,第二个是保留的位数,如果不显式给定第二位,则默认不保留......
  • 【python】list中extend和append的区别
    在python列表中,extend和append都可以往列表中加入元素,extend是扩充单个元素,如:a='abc123'b=[]b.extend(a)>>>b=['a','b','c','1','2','3']而append是扩......
  • 力扣409(java&python)-最长回文串(简单)
    题目:给定一个包含大写字母和小写字母的字符串 s ,返回 通过这些字母构造成的最长的回文串 。在构造过程中,请注意区分大小写。比如 "Aa" 不能当做一个回文字符串......
  • Delphi 替换字符函数
    Delphi中的StringReplace函数是SysUtils单元中自带的函数:typeTReplaceFlags=setof(rfReplaceAll,rfIgnoreCase);functionStringReplace(constS,OldPattern,......
  • grpc demo python客户端 c++服务端
    项目需啊将网站上传的图片传入c++推理引擎,网站使用flask架构,python编写,图片推理引擎是一个单独的server,c++编写,因此用grpc来传输比较合适。理论上来说只要规定好proto文件,......
  • 构造函数和原型
    一、构造函数和原型(一)概述1、在典型的OOP的语言中(如java),都存在类的概念,类就是对象的模板,对象就是类的实例,但在ES6之前,JS中并没有引入类的概念。2、在ES6之前,对象不是基......
  • oracle的length()、lengthb()、to_single_bye()函数
    length('张三')结果:2lengthb('张三')结果:4所以length返回长度为字符个数,lengthb返回长度为字节数to_single_byte():全角转半角函数 ......