【Python】学习Python常用函数作用和用法

简介: 【Python】学习Python常用函数作用和用法
1.函数

函数就是把程序进行打包,封装到一个包中,使用时可以直接进行调用

1.创建函数和调用函数:
>>> def test():
  pass
>>> test()
>>> def test():
  for i in range(3):
    print("I love curry")
调用函数
>>> test
<function test at 0x000001B617CCF3A0>
>>> test()
I love curry
I love curry
I love curry
2.创建传参函数
>>> def test(times,name):
  for i in range(times):
    print(f"I love {name}")
>>> test(5,"Python")
I love Python
I love Python
I love Python
I love Python
I love Python
3.函数的返回值

return:直接返回值,不在理会后面的所有的代码

>>> def test(x,y):
  return x/y
>>> test(4,2)
2.0
>>> def test(x,y):
  if y == 0:
    return "不能为0"
  return x/y
>>> test(10,2)
5.0
4.位置参数

在使用传参函数中有两种关键称呼:

形式参数(形参):在创建函数时,预留的变量名被称为形参

实际参数(实参):在调用函数时,给于的参数被称为实参

>>> def test(a,b,c):
  return "".join((c,b,a))
位置参数传参
>>> test("我","爱","你")
'你爱我'
关键参数传参
>>> test(c="我",b="爱",a="你")
'我爱你'

默认参数:

>>> def test(a,b,c="她"):
  return "".join((c,b,a))
>>> test("我","爱")
'她爱我'
5.冷知识
>>> help(sum)
Help on built-in function sum in module builtins:
sum(iterable, /, start=0)
    Return the sum of a 'start' value (default: 0) plus an iterable of numbers
    When the iterable is empty, return the start value.
    This function is intended specifically for use with numeric values and may
    reject non-numeric types.

可以看到,使用格式中出现了一个 / 反斜杠,他是代表在它之前是不允许使用关键字参数的,只可以使用位置参数

在函数中也一样,但是我们可以使用*星号来代替,这样第一位可以为位置参数或关键参数,但是后面都要为关键字参数

>>> def test(a,*,b,c):
  return "".join((c,b,a))
>>> test(a="我",b="爱",c="她")
'她爱我'
>>> test("我",b="爱",c="她")
'她爱我'
>>> test("我","爱","她")
Traceback (most recent call last):
  File "<pyshell#181>", line 1, in <module>
    test("我","爱","她")
TypeError: test() takes 1 positional argument but 3 were given
6.多参参数

传入多个参数,是以元组的形式来进行打包的,只需要在变量名前面多加一个*星号即可

第二种理解:传入一个元组类型的变量,将多个值放到一个元组中

>>> def test(*args):
  print(f"一共多少个参数{len(args)}")
  print(f"第2个参数是什么:{args[1]}")
>>> test(1,2,3,4,5)
一共多少个参数5
第2个参数是什么:2

如果使用了多参赋值,后面的其他变量,必须使用关键字参数来进行赋值了

>>> def test(*args,a,b):
  print(args,a,b)
>>> test(1,2,3,4,5,a=6,b=7)
(1, 2, 3, 4, 5) 6 7
字典函数

在声明一个函数中,可以同时声明一个字典类型的变量来存储数据

>>> def test(**args):
  print(args)
>>> test(a=1,b=2,c=3)
{'a': 1, 'b': 2, 'c': 3}
>>> def test(a,*b,**args):
  print(a,b,args)
>>> test(1,2,3,4,5,d=1,b=2,c=3)
1 (2, 3, 4, 5) {'d': 1, 'b': 2, 'c': 3}
解包参数

元组的解包

>>> args=(1,2,3,4)
>>> def test(a,b,c,d):
  print(a,b,c,d)
>>> test(*args)
1 2 3 4

字典的解包

>>> args={'a':1,'b':2,'c':3,'d':4}
>>> test(**args)
1 2 3 4
7.作用域
1.局部作用域
>>> def test():
  x=520
  return x
>>> test()
520
>>> print (x)
Traceback (most recent call last):
  File "<pyshell#266>", line 1, in <module>
    print (x)
NameError: name 'x' is not defined
2.全局作用域
>>> x = 888
>>> def test():
  return x
>>> test()
888

如果在函数的局部变量中与全局变量的名称相同,那么局部变量会代替全局变量,仅限于在当前函数中使用

>>> x = 888
>>> def test():
  return x
>>> test()
888
>>> def test():
  x = 666
  return x
>>> test()
666
3.global语句

使用global来进行声明变量为全局变量

>>> x = 888
>>> def test():
  global x
  x = 520
  return x
>>> x
888
>>> test()
520
>>> x
520
4.嵌套函数
>>> def funA():
  x = 520
  def funB():
    x = 666
    print (f"FunB:{x}")
  funB()
  return f"funA:{x}"
>>> funA()
FunB:666
'funA:520'
5.nonlocal语句

作用:可以将变量申明为外部变量

>>> def funA():
  x = 520
  def funB():
    nonlocal x
    x = 666
    print (f"FunB:{x}")
  funB()
  return f"funA:{x}"
>>> funA()
FunB:666
'funA:666'
6.LEGB规则

L:local(局部作用域)E:enclosed(嵌套函数的外层函数作用域)G:global(全局作用域)B:build-ln(内置作用yu)

当一个局部变量与全局变量相同时,这个局部变量就会代替全局变量来进行被调用使用

>>> str(123)
'123'
>>> str="123"
>>> str(123)
Traceback (most recent call last):
  File "<pyshell#313>", line 1, in <module>
    str(123)
TypeError: 'str' object is not callable
>>> del str
>>> str(123)
'123'

注意:为了避免这种情况发生,在声明变量时,尽量不要出现与python中的内置函数名冲突

1,2,3,4,5,a=6,b=7)

(1, 2, 3, 4, 5) 6 7

######  字典函数
    在声明一个函数中,可以同时声明一个字典类型的变量来存储数据
```py
>>> def test(**args):
  print(args)
>>> test(a=1,b=2,c=3)
{'a': 1, 'b': 2, 'c': 3}
>>> def test(a,*b,**args):
  print(a,b,args)
>>> test(1,2,3,4,5,d=1,b=2,c=3)
1 (2, 3, 4, 5) {'d': 1, 'b': 2, 'c': 3}
解包参数

元组的解包

>>> args=(1,2,3,4)
>>> def test(a,b,c,d):
  print(a,b,c,d)
>>> test(*args)
1 2 3 4

字典的解包

>>> args={'a':1,'b':2,'c':3,'d':4}
>>> test(**args)
1 2 3 4
7.作用域
1.局部作用域
>>> def test():
  x=520
  return x
>>> test()
520
>>> print (x)
Traceback (most recent call last):
  File "<pyshell#266>", line 1, in <module>
    print (x)
NameError: name 'x' is not defined
2.全局作用域
>>> x = 888
>>> def test():
  return x
>>> test()
888

如果在函数的局部变量中与全局变量的名称相同,那么局部变量会代替全局变量,仅限于在当前函数中使用

>>> x = 888
>>> def test():
  return x
>>> test()
888
>>> def test():
  x = 666
  return x
>>> test()
666
3.global语句

使用global来进行声明变量为全局变量

>>> x = 888
>>> def test():
  global x
  x = 520
  return x
>>> x
888
>>> test()
520
>>> x
520
4.嵌套函数
>>> def funA():
  x = 520
  def funB():
    x = 666
    print (f"FunB:{x}")
  funB()
  return f"funA:{x}"
>>> funA()
FunB:666
'funA:520'
5.nonlocal语句

作用:可以将变量申明为外部变量

>>> def funA():
  x = 520
  def funB():
    nonlocal x
    x = 666
    print (f"FunB:{x}")
  funB()
  return f"funA:{x}"
>>> funA()
FunB:666
'funA:666'
6.LEGB规则

L:local(局部作用域)E:enclosed(嵌套函数的外层函数作用域)G:global(全局作用域)B:build-ln(内置作用yu)

当一个局部变量与全局变量相同时,这个局部变量就会代替全局变量来进行被调用使用

>>> str(123)
'123'
>>> str="123"
>>> str(123)
Traceback (most recent call last):
  File "<pyshell#313>", line 1, in <module>
    str(123)
TypeError: 'str' object is not callable
>>> del str
>>> str(123)
'123'

注意:为了避免这种情况发生,在声明变量时,尽量不要出现与python中的内置函数名冲突

目录
相关文章
|
20天前
|
Python 容器
Python学习的自我理解和想法(9)
这是我在B站跟随千锋教育学习Python的第9天,主要学习了赋值、浅拷贝和深拷贝的概念及其底层逻辑。由于开学时间紧张,内容较为简略,但希望能帮助理解这些重要概念。赋值是创建引用,浅拷贝创建新容器但元素仍引用原对象,深拷贝则创建完全独立的新对象。希望对大家有所帮助,欢迎讨论。
|
2天前
|
数据可视化 数据挖掘 大数据
1.1 学习Python操作Excel的必要性
学习Python操作Excel在当今数据驱动的商业环境中至关重要。Python能处理大规模数据集,突破Excel行数限制;提供丰富的库实现复杂数据分析和自动化任务,显著提高效率。掌握这项技能不仅能提升个人能力,还能为企业带来价值,减少人为错误,提高决策效率。推荐从基础语法、Excel操作库开始学习,逐步进阶到数据可视化和自动化报表系统。通过实际项目巩固知识,关注新技术,为职业发展奠定坚实基础。
|
11天前
|
Python
Python学习的自我理解和想法(10)
这是我在千锋教育B站课程学习Python的第10天笔记,主要学习了函数的相关知识。内容包括函数的定义、组成、命名、参数分类(必须参数、关键字参数、默认参数、不定长参数)及调用注意事项。由于开学时间有限,记录较为简略,望谅解。通过学习,我理解了函数可以封装常用功能,简化代码并便于维护。若有不当之处,欢迎指正。
|
3天前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
17 2
|
22天前
|
存储 索引 Python
Python学习的自我理解和想法(6)
这是我在B站千锋教育学习Python的第6天笔记,主要学习了字典的使用方法,包括字典的基本概念、访问、修改、添加、删除元素,以及获取字典信息、遍历字典和合并字典等内容。开学后时间有限,内容较为简略,敬请谅解。
|
22天前
|
Python
Python学习的自我理解和想法(7)
学的是b站的课程(千锋教育),跟老师写程序,不是自创的代码! 今天是学Python的第七天,学的内容是集合。开学了,时间不多,写得不多,见谅。
|
21天前
|
存储 安全 索引
Python学习的自我理解和想法(8)
这是我在B站千锋教育学习Python的第8天,主要内容是元组。元组是一种不可变的序列数据类型,用于存储一组有序的元素。本文介绍了元组的基本操作,包括创建、访问、合并、切片、遍历等,并总结了元组的主要特点,如不可变性、有序性和可作为字典的键。由于开学时间紧张,内容较为简略,望见谅。
|
1月前
|
人工智能 数据可视化 数据挖掘
探索Python编程:从基础到高级
在这篇文章中,我们将一起深入探索Python编程的世界。无论你是初学者还是有经验的程序员,都可以从中获得新的知识和技能。我们将从Python的基础语法开始,然后逐步过渡到更复杂的主题,如面向对象编程、异常处理和模块使用。最后,我们将通过一些实际的代码示例,来展示如何应用这些知识解决实际问题。让我们一起开启Python编程的旅程吧!
|
30天前
|
存储 数据采集 人工智能
Python编程入门:从零基础到实战应用
本文是一篇面向初学者的Python编程教程,旨在帮助读者从零开始学习Python编程语言。文章首先介绍了Python的基本概念和特点,然后通过一个简单的例子展示了如何编写Python代码。接下来,文章详细介绍了Python的数据类型、变量、运算符、控制结构、函数等基本语法知识。最后,文章通过一个实战项目——制作一个简单的计算器程序,帮助读者巩固所学知识并提高编程技能。
|
19天前
|
Unix Linux 程序员
[oeasy]python053_学编程为什么从hello_world_开始
视频介绍了“Hello World”程序的由来及其在编程中的重要性。从贝尔实验室诞生的Unix系统和C语言说起,讲述了“Hello World”作为经典示例的起源和流传过程。文章还探讨了C语言对其他编程语言的影响,以及它在系统编程中的地位。最后总结了“Hello World”、print、小括号和双引号等编程概念的来源。
103 80