python基础-------函数

一 为何要有函数?
不加区分地将所有功能的代码垒到一起,

问题是:
代码可读性差
代码冗余
代码可扩展差

如何解决?
函数即工具,事先准备工具的过程是定义函数,拿来就用指的就是函数调用

结论:函数使用必须是:先定义,后调用

二:函数的分类

1.内置函数:built-in
2.自定义函数:
def 函数名(参数1,参数2,...):
‘‘‘注释‘‘‘
函数体

三:函数的返回值

返回值:可以返回任意类型
没有return:None
return value: value
return val1,val2,val3 :(val1,val2,val3)

return的效果:只能返回一次值,终止函数的执行

四:函数参数的使用

ef fuck():#     if 2>1#         print(2)# #定义阶段只检查代码的语法不会执行代码,所以该函数内有报错!## def fuck():#     aaaaaaaaaaaaaaaaaaaaaaaaaaaaa# #虽然语法没错误但是逻辑有问题,引用了一个不存在变量名。# #定义的阶段# def fuck():#     print(‘fuck1‘)# def fuck1():#     print(fuck())# fuck()#调用的阶段# 函数的调用遵循先定义后使用的规则(调用)!# def fuck2():#     return   #返回值 可以返回多个值默认以元组的形式返回 只能返回一次值 ,并且会终止函数的执行,因而放与最后!             #返回类型的值,没有return的话会默认返回None# def fuck3():#     return ‘a‘,‘b‘,‘c‘# b=fuck3()# print(b)# def fuck3(x,y):#形参,按照位置定义的形参! 遵循必须传入参数,多一个不行,少一个也不行!#     print(‘x‘,‘y‘)## fuck3(1,2) #位置实参  ,按照位置定义的实参!首先必须遵循形参的规则!并且按照位置与形参一一对应!# fuck3(x=1,y=2) #关键字实参, 按照关键字对应形参!首先必须遵循形参的规则!指名道姓的于形参对应# fuck3(1,y=2)  #混合型实参(既有位置实参,也有关键字形参!)首先必须遵循形参的规则!且遵循位置实参必须在关键字实参的前面

#可变长参数:实参参数个数不固定的情况!### def fuck4(x,y,*mage): #用*来处理可变长的位置实参将多余出来的实参以元组的形式并且赋值给mage变量!*为位置参数遇到将其拆开!#     print(x,y,mage)# fuck4(1,2,3,4,5,6,7,8)# def fuck5(x,y,**kmages):#用**来处理可变长的关键字实参将多余出来的实参以字典的形式并且赋值给kmages变量!#     print(x,y,kmages)# fuck5(x=1,y=2,z=12,ag=123)默认参数函数在定义时给参数进行了默认定义def cout(a=1):#这个a=1就是默认函数

#默认参数需要注意的问题一:必须放在位置形参后面#默认参数需要注意的问题二:默认参数通常要定义成不可变类型#默认参数需要注意的问题三:默认参数只在定义阶段被赋值一次

#命名关键字参数:定义在*后的形参,这类形参,必须被传值,而且要求实参必须是以关键字的形式来传值

# def register(*args,name=‘egon‘,age):
# print(args)
# print(name)
# print(age)
#
# # register(name=‘egon‘,age=18)
# register(1,2,2,3,age=10

五:函数的嵌套使用

函数的嵌套调用
#
# def max2(x,y):
# if x > y:
# return x
# else:
# return y
#
# def max4(a,b,c,d):
# res1=max2(a,b) #23
# res2=max2(res1,c) #23
# res3=max2(res2,d) #31
# return res3
#
#
# print(max4(11,23,-7,31))

#函数的嵌套定义
def f1():
  def f2():
    def f3():
    print(‘from f3‘)
  print(‘from f2‘)
f3()
print(‘from f1‘)
f2()
# print(f1)
f1()

在函数定义阶段就进行函数内部逐层进行定义。

六:函数对象

#函数是第一类对象: 指的是函数可以被当做数据传递

def func():
print(‘from func‘)

#可被引用
# f=func

#可以当做函数的参数
# def func():
# print(‘from func‘)
# def foo(x):
# print(x)
# x()
#
# foo(func)

#可以当做函数的返回值
# def foo():
# print(‘from foo‘)
# def bar():
# return foo
# f=bar()
# print(f)
# print(foo)

# x=0
# def f1():
# x=1
# def f2():
# # x=2
# print(x)
# return f2
# f=f1()
# # print(f)
# f()

#可以当做容器类型的元素
# def select():
# print(‘select function‘)
#
# func_dic={
# ‘select‘:select,
# }
#
# # print(func_dic[‘select‘])
# func_dic[‘select‘]()

七:名称空间与作用域

#名字空间:存放名字与值的绑定关系

#名称空间分为三种

#内置名称空间:python解释器自带的名字,python解释器启动就会生成

#全局名称空间:文件级别定义的名字都会存放与全局名称空间,执行python文件时会产生

# x=1
# def func():
# pass
#
# class Foo:
# pass
#
# import os
#
# if 1 > 2 :
# y=3

#局部名称空间:定义在函数内部的名字,局部名称空间只有在调用函数时才会生效,函数调用结束则失效
# def func(x,y): #x=1,y=2
# z=3

# func(1,2)

#三者的加载顺序:内置名称空间->全局名称空间->局部名称空间

#取值:局部名称空间->全局名称空间->内置名称空间

# # max=10
# def func(): #x=1
# # max=20
# print(max)
#
#
# func()

# max=10
#
# def func(): #x=1
# max=20
# # print(max)
# func()
#
#
# print(max)
#

# # x=0
# def f1():
# # x=1
# def f2():
# # x=2
# def f3():
# # x=3
# print(x)
# f3()
# f2()
#
# f1()

#作用域:作用范围
#全局作用域:内置名称空间与全局名称空间的名字属于全局范围,
# 在整个文件的任意位置都能被引用,全局有效
#局部作用域:局部名称空间的名字属于局部范围,
#只在函数内部可以被引用,局部有效

# x=1
# def foo():
# def f2():
# print(x)
# f2()
# def bar():
# print(x)
#
# foo()
# bar()

# def f1():
# x=1
# def f2(): #f2=value
# # x=2
# print(x)
# f2()
# f1()

x=1
def func():
x=2
def f1():pass
# print(dir(globals()[‘__builtins__‘])) #全局作用域name
# print(locals()) #局部作用域name

func()

print(globals() is locals())

#取值查找顺序 局部作用域----->全局作用域


 

时间: 2024-10-20 11:42:11

python基础-------函数的相关文章

python基础——函数对象和闭包

关于函数对象和闭包 闭包(closure)是函数式编程的重要的语法结构.不同的语言实现闭包的方式不同.Python以函数对象为基础,为闭包这一语法结构提供支持的 (我们在特殊方法与多范式中,已经多次看到Python使用对象来实现一些特殊的语法).Python一切皆对象,函数这一语法结构也是一个对象.在函数对象中,我们像使用一个普通对象一样使用函数对象,比如更改函数对象的名字,或者将函数对象作为参数进行传递. 一.函数对象: 1.函数可以当参数传递 示例: #把函数当成参数传递 def foo()

python基础-函数_递归_内置函数

一 数学定义的函数与python中的函数 二 为何使用函数 背景提要 三 函数和过程 四 函数参数 五 局部变量与全局变量 六 前向引用之'函数即变量' 七 嵌套函数 八 递归 九 匿名函数 十 函数式编程 十一 内置函数 十二 本节作业 一.数学定义的函数与python中的函数 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因变量,y是x的函数.自变量x的取值范围叫做这个函数的定义域

Python 全栈开发四 python基础 函数

一.函数的基本语法和特性 函数的定义 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的.函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可. python中函数的分类 内置函数 自定义函数 特性: 减少重复代码 使程序有更好的扩展性 让程序更容易维护 定义一个函数 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号(). 任何传入参数和自变量必须放在圆括号中间.圆

python基础函数、方法

python的函数和方法,通过def 定义: 函数的特性: 减少重复代码 使程序变的可扩展 使程序变得易维护 函数和方法的区别:函数有返回值.方法没有 语法定义: def sayhi():#函数名 print("Hello, I'm nobody!") sayhi() #调用函数 可以带参数 #下面这段代码 a,b = 5,8 c = a**b print(c) #改成用函数写 def calc(x,y): res = x**y return res #返回函数执行结果 c = cal

Python基础函数、递归、内置函数

一.数学定义中的函数与Python中的函数 初中数学定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定值,y都有唯一确定的值与之对应,那么我们就把x称为自变量,把y称为因变量,与是x的函数.自变量x的取值范围叫做这个函数的定义域. 例如:y=2*x python中函数的定义:函数是逻辑结构化和过程化的一种编程方法. # Python中函数定义方法 def test(x): "the function definitions" x+=1 return x def

python基础 函数定义 返回值 参数

函数定义 1 #python中函数定义.def函数定义的关键字,fun1函数名,x为函数的形参可以有多个,多个之间用“,”隔开:return 函数返回值的关键字,python中return可以是非必要 2 def fun1(x): 3 x += 1 4 return x 函数返回值 1 # 函数返回值可以有多个,之间使用“’”分隔,返回值讲多个值组成的元组进行返回. 当无return时python会隐式return “None”,如果只返回一个值就返回这个值本身 2 def fun2(x, y)

Python基础(函数部分)-day04

写在前面 上课第四天,打卡: 加勒比海盗今天上映:端午节公司发的粽子很有范! 一.函数的基本概念 - 函数是什么?  函数,就是一个'锤子',一个具有特定功能的'锤子',使用者可以在适当的时候使用这个'锤子',而不用再去从头做一个'锤子':即可以直接拿来使用: 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率. - 不使用函数会有什么问题? 1.组织结构不清晰,可读性差: 2.代码冗余: 3.无法统一管理且维护难度大: - 函数的分类

python 基础--函数

Python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这被叫做用户自定义函数. 定义一个函数 你可以定义一个由自己想要功能的函数,以下是简单的规则: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号(). 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数. 函数的第一行语句可以选择性地使用文档字符串-用于

Python基础函数

函数命名规则: 与变量一样,参考python的官方推荐的命名格式:function_name.小写+下划线 必备参数:必须传参数,可以在调用时赋值. 默认参数:参数可传可不传.不传参,就是默认值:传了参就覆盖.参数名要相同!(例如:step是个默认参数) 可选参数:中括号表示.(例如之前:[,stop]就是可选) 传入参数的是元组,没传入参数是空元组. 关键字参数:定义的时候跟必备参数样子长得一样.使用关键字参数调用函数时,参数的顺序可以与声明时的不一样,Python解释器能用参数名匹配参数值.