首页 > 编程语言 >python基础——函数

python基础——函数

时间:2022-08-25 12:55:11浏览次数:54  
标签:函数 python age 基础 ---- print def name

函数

  • 函数就是将一段具有独立功能的代码块整合到一个整体并命名
  • 在需要的位置调用这个名称 即可完成对应的需求。
  • 函数在开发过程中,可以更高效的实现代码重用。
  • 先定义 后调用

最简单的函数

# 定义函数
def add_num1():
    result = 1+ 2
    print(result)
    return 123
# 调用函数
add_num1() # 3

# 函数名字是一些指令,存于某个内存地址处
print(add_num1) # <function add_num1 at 0x0000021984453E20>
# 加上括号就是调用
a = add_num1() # 3
# 函数中 return 后边跟的就是  函数返回出来的数据 可以赋值给变量;print()的数据不会返回,只会打印
print(a) # 123

加参数的函数

# 定义函数同时定义了接收用户数据的参数 a和b, a和b是形参
def add_num2(a , b):
    result = a + b
    print(result)
# 调用函数时传入了真实的数据 10 和 20,真实数据为实参
# 不传参数就会报错
add_num(10,20) # 30


# 位置参数
def user_info(name, age, gender):
    print(f'您的名字是{name}, 年龄是{age}, 性别是{gender}')
user_info('TOM', 20, '男')

# 关键字参数
def user_info(name, age, gender):
    print(f'您的名字是{name}, 年龄是{age}, 性别是{gender}')
user_info('Rose', age=20, gender='女')
user_info('小明', gender='男', age=16)

# 默认函数 可以省略填写
def user_info(name, age, gender='男'):
    print(f'您的名字是{name}, 年龄是{age}, 性别是{gender}')
user_info('TOM', 20)
user_info('Rose', 18, '女')

# 您的名字是TOM, 年龄是20, 性别是男
# 您的名字是Rose, 年龄是20, 性别是女
# 您的名字是小明, 年龄是16, 性别是男
# 您的名字是TOM, 年龄是20, 性别是男
# 您的名字是Rose, 年龄是18, 性别是女

# 可变参数 
def user_info(*args): # * 将n个位置参数组成元组
    print(args)
    print(*args) # 拆包
# ('TOM',)
# TOM
user_info('TOM')
# ('TOM', 18)
# TOM 18
user_info('TOM', 18)

def user_info(**kwargs): # ** 将n个关键字参数组合为字典
	print(kwargs)
	print(*kwargs) # 拆包
# {'name': 'TOM', 'age': 18, 'id': 110}
# name age id
user_info(name='TOM', age=18, id=110)

# 拆包
return_num = (100,200)
num1, num2 = return_num
print(num1) # 100
print(num2) # 200


dict1 = {'name': 'TOM', 'age': 18}
a, b = dict1
# 对字典进行拆包,取出来的是字典的key
print(a) # name
print(b) # age
print(dict1[a]) # TOM
print(dict1[b]) # 18

# 1位置参数 2关键字参数 3默认参数 4可变参数 混合使用时
# 按照上边的1234顺序写


返回值

def add_num1():
    return 123

a = add_num1()
print(a) # 123


def add_num1():
    # 多个数据返回 逗号分割
    return 123,456

a = add_num1()
# 多个数据 会以元组展示
print(a) # (123, 456)


def add_num1():
    return 123
    return 456

a = add_num1()
# 第一个return 除了返回数据还会终止函数,所以456没有返回
print(a) # 123

函数说明文档

def sum_num(a, b):

    """ 求和函数 """
    return a + b
help(sum_num)

# Help on function sum_num in module __main__:
# 
# sum_num(a, b)
#     求和函数

嵌套函数

def testB():
    print('---- testB start----')
    print('这里是testB函数执行的代码...(省略)...')
    print('---- testB end----')
def testA():
    print('---- testA start----')
    testB()
    print('---- testA end----')
testA()

# ---- testA start----
# ---- testB start----
# 这里是testB函数执行的代码...(省略)...
# ---- testB end----
# ---- testA end----

变量作用域

  • 变量作用域指的是变量生效的范围,主要分为两类:局部变量和全局变量。
  • 局部变量 所谓局部变量是定义在函数体内部的变量,即只在函数体内部生效。
  • 全局变量 所谓全局变量,指的是在函数体内、外都能生效的变量。
  • 变量查找顺序,由内到外,从本层开始。
  • global 声明全局
def test():
    a = 100
    print(a)
test() # 100
# print(a) # 报错:name 'a' is not defined


a = 100
def testA():
    # 虽然可以找到全局的变量,但是不能修改,修改就相当于在函数里新建一个局部变量
    print(a)

def testB():
    a = 200
    print(a)

def testC():
    # 声明a 是全局的变量,此时可以修改这个全局变量
    global a
    print(a)

# 变量查找顺序。从内到外
testA() # 100
testB() # 200
testC() # 100
print(f'全局变量a = {a}') # 全局变量a = 100

可变类型与不可变类型

  • 数据能够直接进行修改,如果能直接修改那么就是可变,否则是不可变.
  • 查看id和数值,改变数据,但是id不变就是可变

可变类型

  • 列表
  • 字典
  • 集合

不可变类型

  • 整型
  • 浮点型
  • 字符串

递归

def sum_numbers(num):
    # 1.如果是1,直接返回1 -- 出口
    if num == 1:
        return 1

    # 2.如果不是1,重复执行累加并返回结果
    return num + sum_numbers(num-1)


sum_result = sum_numbers(10)

# 输出结果为6
print(sum_result)

lambda

# lambda 参数列表 : 表达式

# 无参数
fn1 = lambda: 100
print(fn1())

# 一个参数
fn1 = lambda a, b: a + b
print(fn1(1, 2))

# 默认参数
fn1 = lambda a, b, c=100: a + b + c
print(fn1(10, 20))

# 可变参数
fn1 = lambda *args: args
print(fn1(10, 20, 30))

fn1 = lambda **kwargs: kwargs
print(fn1(name='python', age=20))

# 应用1
fn1 = lambda a, b: a if a > b else b
print(fn1(1000, 500))

# 应用2
students = [
{'name': 'TOM', 'age': 20},
{'name': 'ROSE', 'age': 19},
{'name': 'Jack', 'age': 22}
]
# 按name值升序排列
students.sort(key=lambda x: x['name'],reverse=False)
print(students)

高阶函数

  • 把函数作为参数传入,这样的函数称为高阶函数,高阶函数是函数式编程的体现。
  • 函数式编程就是指这种高度抽象的编程范式。

map

  • map(func, lst),将传入的函数变量func作用到lst变量的每个元素中,
  • 并将结果组成新的列表(Python2)/ 迭代器(Python3)返回。
list1 = [1, 2, 3, 4, 5]
def func(x):
    return x ** 2

result = map(func, list1)
print(result) # <map object at 0x0000013769653198>
print(list(result)) # [1, 4, 9, 16, 25]

reduce

  • reduce(func,lst),其中func必须有两个参数。
  • 每次func计算的结果继续和序列的下一个元素做累积计算。
import functools
list1 = [1, 2, 3, 4, 5]
def func(a, b):
    return a + b

result = functools.reduce(func, list1)
print(result) # 15

filter

  • filter(func, lst)函数用于过滤序列
  • 只要符合条件的
  • 过滤掉不符合条件的元素,
  • 返回一个 filter 对象。
  • 如果要转换为列表, 可以使用 list() 来转换。
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def func(x):
    return x % 2 == 0

result = filter(func, list1)
print(result) # <filter object at 0x0000017AF9DC3198>
print(list(result)) # [2, 4, 6, 8, 10]

标签:函数,python,age,基础,----,print,def,name
From: https://www.cnblogs.com/fhy-blog/p/16623923.html

相关文章

  • iOS开发入门基础篇
    iOS开发入门 任何C源程序,不经修改,即可通过Objective-C编译器成功编译Objective-C源程序中可以直接使用任何C语言代码除了面向对象有语法是SmallTalk风格的(下面会讲到),其......
  • 学习:python操作数据库(二)
    python连接数据库下载第三方包    创建表   ......
  • python 3 用pyexecjs 执行 javascript 代码
    #运行js代码e=execjs.eval('a=newArray(1,2,3)')#execjs.eval()获取js环境,直接执行js代码,适用于简单的运算适用于从前端读取js代码然后运行(前后......
  • Sass预处理器 常见函数的基本使用
    Sass提供了许多内置模块,其中包含有用的函数(以及mixin)。这些模块可以像任何用户定义的样式表一样使用@use规则加载,它们的函数可以像任何其他模块成员一样调用。所有内置模块......
  • 复习:linux基础 软链接和硬链接
    软链接=windows下的快捷方式特点:可以对不存在的文件创建软链接可以对文件或者目录来创建软链接删除了软链接不会影响他的指向文件删除了指向文件,该软链接会变成死链......
  • redis基础知识
    1、redisjedis客户端pipeline中可以传入function或consumer,里面可以写多条语句2、redis客户端setnx:key不存在时才set,存在时则忽略3、redis数据类型:hash数据类型:即键......
  • VUE 基础知识总结
    VUE的介绍VUE的导包<!DOCTYPEhtml><html><head><metacharset="utf-8"><title></title><!--开发环境版本--><scriptsrc="https://cdn.jsdel......
  • HTML基础(三):列表、表格、表单标签学习
    列表标签列表的应用场景场景:在网页中按照行展示关联性内容,如新闻列表、排行榜、账单等特点:按照行的方式整齐显示内容种类:有序列表、无序列表、自定义列表无序列表......
  • 基础数论模板
    快速幂longlongqpow(longlonga,longlongb){ longlongans=1; for(;b;b>>=1) { if(b&1) ans=ans*a%p; a=a*a%p; } returnans;}线性筛......
  • 学习:python操作mysql(一)
    1、安装mysql,这里我大哥提供给我的是解压版的安装包为了防止自己以后忘了记录一下安装方式第一步将安装包解压到提前准备好的文件夹内  第二步配置环境变量path......