接触python也有好几年了,一直处于学学忘忘的状态,没有形成具体框架,都是哪里不会问度娘,总这样学觉得不太踏实,还是打好基础心里稳一点。
但是也不是从最基本的安装环境,变量开始写,那种也没有什么技术含量,百度看看就好了。
所以本文合适学过python,但好久没用过的人看。
python函数基础(下
在Python中,函数是一种用于封装可重用代码块的机制。通过定义函数,可以将一段代码逻辑封装起来,并在需要的时候进行调用。函数可以带有参数和返回值,可以接受输入并产生输出。
1.函数的基本类型
(1)无参数函数
这种函数在定义时不需要传递任何参数,也不返回任何值。它们执行特定的操作或完成特定的任务。例如:
def say_hello():
print("Hello!")
# 调用函数
say_hello()
(2)带参数函数
这种函数在定义时可以接受一个或多个参数,并且可以根据传递的参数执行相应的操作。例如:
def greet(name):
print("Hello, " + name + "!")
# 调用函数并传递参数
greet("Alice")
(3)有返回值函数
这种函数在执行完特定的操作后,可以返回一个值给调用者。调用者可以使用函数的返回值进行进一步的处理或操作。例如:
def add_numbers(a, b):
return a + b
# 调用函数并接收返回值
result = add_numbers(2, 3)
print(result) # 输出:5
(4)匿名函数(Lambda函数)
喜剧之王里周星驰演的尹天仇是个“死”跑龙套的,所谓跑龙套的,就是指那些群众演员,戏份非常少,衬托主演,演员表里都找不到名字,也不需要名字,他们需要名字吗?不需要,因为他们仅仅只是临时出镜,下次可能就用不着了,所以犯不着费心思给他们每个人编个号取个名字,毕竟取个优雅的名字是很费劲的事情。
Python中也有类似这种群众演员的函数:Lambda
这是一种特殊类型的函数,通常用于简单的操作或表达式。它们是一行代码的函数,没有函数名,可以直接调用。例如:
# 定义一个匿名函数,计算两个数的和
add = lambda a, b: a + b
# 调用匿名函数
result = add(2, 3)
print(result) # 输出:5
2.局部变量
(1)基本概念
局部变量是在函数内部定义的变量,其作用范围仅限于函数内部。这意味着局部变量只能在其所在的函数内部访问和使用,而在函数外部是不可见的。
(2)使用方法和注意事项
1.定义局部变量
在函数内部通过赋值语句来定义局部变量。例如:
def my_function():
my_var = 10 # 定义局部变量
# 在函数内部使用局部变量
print(my_var)
# 调用函数
my_function()
2.局部变量的作用范围
局部变量只在其所在的函数内部有效,超出函数范围后将无法访问。例如:
def my_function():
my_var = 10 # 定义局部变量
# 在函数内部使用局部变量
print(my_var)
# 调用函数
my_function()
# 尝试在函数外部访问局部变量(会引发错误)
print(my_var) # NameError: name 'my_var' is not defined
3.避免命名冲突
局部变量的作用范围仅限于函数内部,因此可以在不同的函数中使用相同的变量名而不会产生冲突。每个函数都有自己的作用域,其中的变量不会与其他函数中的同名变量产生干扰。
4.函数参数作为局部变量
函数的参数也属于局部变量,其作用范围限于函数内部。函数参数可以像局部变量一样在函数内部使用。
def multiply(a, b):
result = a * b # 定义局部变量result
# 在函数内部使用局部变量
print(result)
# 调用函数
multiply(2, 3)
局部变量在函数内部起到临时存储和处理数据的作用,它们的生命周期仅限于函数的执行过程中。一旦函数执行结束,局部变量的值将被销毁,无法再进行访问。
3.全局变量
(1)基本概念
全局变量是在整个程序中定义的变量,其作用范围覆盖整个程序,包括函数内部和函数之间。全局变量可以在程序的任何地方访问和使用。
(2)使用方法和注意事项
1.定义全局变量
在函数外部或模块的顶层定义变量,即可创建全局变量。例如:
# 定义全局变量
global_var = 10
def my_function():
# 在函数内部访问全局变量
print(global_var)
# 调用函数
my_function()
# 在程序其他地方访问全局变量
print(global_var)
2.全部变量的作用范围
局部变量只在其所在的函数内部有效,超出函数范围后将无法访问。例如:
global_var = 10
def my_function():
global global_var # 声明要修改全局变量的值
global_var = 20
# 在函数内部访问全局变量
print(global_var)
# 调用函数
my_function()
# 在程序其他地方访问全局变量
print(global_var)
3.避免命名冲突
全局变量的作用范围覆盖整个程序,因此需要避免与局部变量或其他全局变量之间产生命名冲突。为了避免冲突,建议使用有意义的变量名,避免重复使用变量名。
4.函数参数作为局部变量
在模块中定义的变量也可以被视为全局变量,因为它们在整个模块中可见。模块级全局变量可以在模块内部的任何函数中访问和使用。只要导入该模块,就可以访问模块级全局变量。
# module.py
module_var = 10 # 模块级全局变量
def my_function():
# 在函数内部访问模块级全局变量
print(module_var)
# main.py
import module
# 在其他模块中访问模块级全局变量
print(module.module_var)
# 调用函数
module.my_function()
4.引用
(1)基本介绍
引用是指对内存中对象的标识和访问。在Python中,变量实际上是对对象的引用,而不是对象本身。
当我们创建一个对象并将其赋值给一个变量时,该变量实际上是一个对该对象的引用。多个变量可以引用同一个对象,这意味着它们指向同一块内存地址。
函数可以接受参数,以便在函数内部使用。参数可以是必需参数或可选参数。例如
(2)使用方法和注意事项
1.变量引用对象
在Python中,变量是对对象的引用。当我们将一个对象赋值给一个变量时,变量就成为了对该对象的引用。例如:
dmy_list = [1, 2, 3] # 创建一个列表对象,并将其赋值给my_list变量
2.多个引用
多个变量可以引用同一个对象。这意味着它们指向同一块内存地址,对一个引用的修改会影响到其他引用。例如:
my_list = [1, 2, 3] # 创建一个列表对象,并将其赋值给my_list变量
another_list = my_list # 将another_list变量设置为对同一列表对象的引用
print(my_list) # 输出:[1, 2, 3]
print(another_list) # 输出:[1, 2, 3]
my_list.append(4) # 修改my_list引用的列表对象
print(my_list) # 输出:[1, 2, 3, 4]
print(another_list) # 输出:[1, 2, 3, 4],another_list也被修改了
在上面的示例中,name参数设置了默认值为"World",如果调用greet函数时没有提供参数,将使用默认值。
3.可变对象和不可变对象
在Python中,对象可以是可变的或不可变的。可变对象的值可以修改,而不可变对象的值不能修改。例如,列表是可变对象,而字符串是不可变对象。对可变对象的修改实际上是在原始对象上进行的,因此所有引用都会反映这些修改。
4.函数参数传递
在函数调用过程中,参数传递是通过引用来实现的。当我们将一个对象作为参数传递给函数时,实际上是将该对象的引用传递给了函数。函数内部对参数的修改可能会影响到原始对象。
def modify_list(some_list):
some_list.append(4) # 修改传入的列表对象
my_list = [1, 2, 3]
modify_list(my_list)
print(my_list) # 输出:[1, 2, 3, 4],my_list被修改了