函数运用与基本知识

函数的定义与调用

1.函数一定要遵循先定义后调用的原则
2.函数在定义阶段只能检测出语法错误
3.函数体代码只有在调用函数的时候才会执行
		#调用函数的方式>>>:函数名加括号
4.函数其实相当于是变量名指向的是内存中函数体代码所在的位置
func()  # 报错  name 'func' is not defined
# 定义函数
def func():
    print('hello world')
# 调用函数
# func()  就是去内存中找到函数体代码并执行

函数的分类

1.内置函数
python解释器提前定义好可以直接调用的函数
eg:len open # 查看内部源代码ctrl+鼠标左键
2.自定义函数
	程序员自己编写的函数
2.1 无参函数
    在函数定义里括弧里面没有参数
    def index():
        print('帅哥')
    index()
2.2 有参函数
	在函数调用阶段括号内也必须传参数>>>:类似于变量
2.3 空函数
	在定义阶段函数体代码是用pass或者...占位
    """
空函数感觉一点用都没有啊 但是非常有用
    前期能够通过空函数快速的罗列出程序中大致的功能
    让程序整体框架清晰  空函数大量的使用在项目前期的功能框架搭建
eg:编写一套钢铁侠程序
    功能也可以看成是函数 函数也可以看成是功能
"""
def fight():
    pass
def run():
    pass
def study():
    pass
def communication():
    pass

函数的返回值

1.函数的返回值其实就是在调用后返回结果
s = 'hello world'
res = len(s)  # 将len函数的返回值赋值给变量res
print(res)
2.获取返回值
变量名 = 函数调用
3.操作返回值
3.1当函数体代码没有return关键字的时候 返回值是None
def index():
    	print('无敌呀')
res = index()
print(res)  # None
3.2当函数体代码写了return但是没有跟任何值得时候 返回值也是None
  	def index():
    	print('无敌呀')
    	return 
	res = index()
	print(res)  # None
3.3.当函数体代码写了return并且跟了数据 那么写什么就返回什么
    如果写的是值那么直接返回值(任意数据类型)
    如果写的是变量名那么返回变量名指向的值
  	def index():
    	print('无敌呀')
    	name = 'Bob'
    	return name
    res = index()
    print(res)  # Bob
3.4return后面还可以跟多个值 逗号隔开  会自动组织成元组返回出去后
def index():
    	print('春困秋乏夏打盹儿')
    	return 111,'jason',222
res = index()
print(res)  # (111,'jason',222)
5.函数体代码遇到return会立刻结束函数运行
  	函数体代码里面写return相当于循环体代码里面写break
    遇到了就立刻结束函数和循环的执行

函数的参数(重要)

"""
##############################################
1.函数的参数可以分为两大类
	1.函数在定义阶段括号内写的参数 
		我们称之为'形式参数' 简称为>>>:形参
	2.函数在调用阶段括号内写的参数
		我们称之为'实际参数' 简称为>>>:实参

2.形参与实参的关系
	形参类似于是变量名、实参类似于是变量的值
		在调用函数的时候传入实参 会与形参临时绑定
		函数运行结束之后自动解除绑定
###############################################
"""
def index(a,b):  # a和b就是index函数的形参
    print(a,b)
index(1,2)  # 1和2就是index函数的实参
"""
1会临时绑定给形参a 2会临时绑定给形参b
    函数体代码运行期间 可以通过形参直接使用到实参
    函数体代码运行完毕之后 解除绑定 
    形参ab处于没有绑定值得状态 等待下一次函数调用传入实参进行绑定
"""
m = 1000
n = 9999
index(m,n)  # 将变量名m、n指向的1000、9999临时绑定给形参ab

位置参数

位置形参
	在函数定义阶段括号内从左往右依次填写的变量名
  	def index(name,pwd):  # name和pwd就是位置形参
      pass
位置实参
	在函数调用阶段括号内从左往右依次传入的真实数据
  	index('jason',123)  # jason和123就是位置实参
  
位置参数的特征
1.位置形参与位置实参在绑定关系的时候就是按照从左往右的顺序依次绑定
2.位置形参与位置实参的个数要一致 多一个不行少一个也不行

可变长参数(重要)

"""需求:定义一个函数 无论传多少位置实参都可以正常执行"""
def func(*a):
    print(a)
func()  # ()
func(1,2)  # (1, 2)
func(1,2,3,4,5,6)  # (1, 2, 3, 4, 5, 6)
"""
*号在形参中
    可以接收多余的位置参数 并组织成元组的形式赋值给*号后面的变量名
"""
"""
**在形参中
    用于接收多余的关键字参数 并且组织成字典的形式赋值给**后面的变量名
"""
def index(a, b, **k):
    print(a, b, k)
index(a=1, b=2)  # 1 2 {}
index(a=1, b=2, c=3, name='jason')  # 1 2 {'c': 3, 'name': 'jason'}
index(1,2,name='jason',age=18,pwd=123)  # 1 2 {'name': 'jason', 'age': 18, 'pwd': 123}
'''需求:定义一个函数 无论传入多少关键字参数都可以正常执行'''
def func(**k):
    print(k)
func()  # {}
func(a=1,b=2)  # {'a': 1, 'b': 2}
func(a=1,b=2,c=3,d=4)  # {'a': 1, 'b': 2, 'c': 3, 'd': 4}

可变长形参

"""
思考题:如何定义一个无论接收多少个任意类型的参数都可以正常执行的函数
"""
def func(*a,**k):
    print(a,k)
func()  # () {}
func(1,2,3,4,name='jason',age=18)  # (1, 2, 3, 4) {'name': 'jason', 'age': 18}
# 以后在定义函数的时候 如果不确定这个函数将来需要多个实参 那么可以采用上述的方法
"""*和**在形参中的使用 后面的变量名并不是关键 但是针对这两个特殊符号后面的变量名 有推荐的写法"""
def index(*args, **kwargs):
    pass
posted @   末笙  阅读(135)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 如何使用 Uni-app 实现视频聊天(源码,支持安卓、iOS)
· C# 集成 DeepSeek 模型实现 AI 私有化(本地部署与 API 调用教程)
点击右上角即可分享
微信分享提示