用pycharm做网站,佛山网站搭建公司哪家好,基于 wordpress 商城,百度手机助手下载安卓版前言
对于刚接触Python的新手来说#xff0c;函数是第一个能让你跳出“逐行写代码”的关键知识点。学会函数#xff0c;你就能把重复的代码封装起来、让逻辑更清晰#xff0c;甚至能写出可复用、易维护的代码。这篇博客会用最细致的讲解、最易懂的例子#xff0c;带你彻底搞…前言对于刚接触Python的新手来说函数是第一个能让你跳出“逐行写代码”的关键知识点。学会函数你就能把重复的代码封装起来、让逻辑更清晰甚至能写出可复用、易维护的代码。这篇博客会用最细致的讲解、最易懂的例子带你彻底搞懂Python函数的所有基础知识点。一、为什么需要函数先解决“为什么学”在没学函数之前你可能会这样写代码# 计算1-2的和print(12)# 计算3-4的和print(34)# 计算5-6的和print(56)这段代码重复了“求和并打印”的逻辑一旦要修改逻辑比如改成求积就得改3处。而用函数改写后defadd(a,b):计算两个数的和并打印resultabprint(result)# 调用函数只需传不同参数add(1,2)add(3,4)add(5,6)只需修改函数内部的逻辑所有调用处都会生效。这就是函数的核心价值代码复用、逻辑解耦、便于维护。二、函数的基础定义与调用函数的本质是“封装好的代码块”使用分为两步先定义再调用。1. 函数的定义语法def函数名(参数列表):函数体要执行的代码return返回值可选def定义函数的关键字必须以这个开头函数名遵循Python命名规则小写、下划线分隔如get_user_name见名知意参数列表括号里的内容是函数接收的“输入”可空return函数的“输出”执行到return会立即结束函数可选。2. 最基础的函数无参数、无返回值# 定义函数打印固定问候语defsay_hello():打印问候语无参数、无返回值print(你好欢迎学习Python函数)# 调用函数函数名括号say_hello()# 输出你好欢迎学习Python函数易错点定义函数时函数体的缩进不能少调用函数时括号必须加哪怕没有参数。3. 带参数的函数让函数更灵活参数是函数的“输入”能让函数处理不同的数据。1位置参数最基础调用时按参数定义的顺序传值是最常用的参数类型。# 定义参数a和b是位置参数defcalculate_sum(a,b):计算a和b的和并打印totalabprint(f{a}{b}{total})# 调用按顺序传10和20a10b20calculate_sum(10,20)# 输出10 20 302关键字参数提升可读性调用时指定参数名顺序可以打乱适合参数较多的场景。# 定义参数name姓名、age年龄defprint_person_info(name,age):打印个人信息print(f姓名{name}年龄{age})# 关键字参数调用指定参数名print_person_info(name小明,age18)# 输出姓名小明年龄18# 顺序打乱也可以print_person_info(age20,name小红)# 输出姓名小红年龄203默认参数简化调用定义函数时给参数指定默认值调用时可省略该参数默认参数必须放在位置参数后面。# 定义age的默认值为18默认参数defprint_person_info(name,age18):打印个人信息年龄默认18print(f姓名{name}年龄{age})# 调用省略age使用默认值18print_person_info(小刚)# 输出姓名小刚年龄18# 调用传入age覆盖默认值print_person_info(小丽,22)# 输出姓名小丽年龄22重要提醒默认参数应使用不可变对象数字、字符串、元组不要用列表、字典等可变对象4可变长度参数处理不确定数量的参数当你不知道要传多少个参数时用*args接收位置参数和**kwargs接收关键字参数。*args打包所有位置参数为一个元组defsum_many(*args):计算任意个数的和total0# args是元组可遍历fornuminargs:totalnumreturntotal# 传3个参数print(sum_many(1,2,3))# 输出6# 传5个参数print(sum_many(10,20,30,40,50))# 输出150# 不传参数也可以print(sum_many())# 输出0**kwargs打包所有关键字参数为一个字典defprint_info(**kwargs):打印任意关键字参数# kwargs是字典可遍历键值对forkey,valueinkwargs.items():print(f{key}{value})# 传2个关键字参数print_info(name张三,gender男)# 输出# name张三# gender男# 传3个关键字参数print_info(brandPython,version3.11,usage编程)# 输出# brandPython# version3.11# usage编程4. 函数的返回值用return输出结果函数执行后如果需要给调用者返回数据就用return语句。1基本用法defmultiply(a,b):计算a和b的积返回结果resulta*b# 返回结果returnresult# 调用函数接收返回值productmultiply(5,6)print(product)# 输出30# 无return的函数默认返回Nonedefno_return():print(无返回值)resno_return()print(res)# 输出None2return的特性执行到return函数立即结束后面的代码不会执行deftest_return():print(执行第一行)return# 结束函数print(执行第二行)# 不会执行test_return()# 输出执行第一行可以返回多个值实际是返回元组defget_user_info():返回姓名、年龄、性别name小明age18gender男# 返回多个值用逗号分隔returnname,age,gender# 接收多个返回值name,age,genderget_user_info()print(f姓名{name}年龄{age}性别{gender})# 输出姓名小明年龄18性别男# 也可以用一个变量接收得到元组infoget_user_info()print(info)# 输出(小明, 18, 男)三、函数的作用域变量在哪里能用新手很容易踩的坑函数内的变量和函数外的变量不是一回事Python的变量作用域分两种1. 局部作用域函数内部函数内部定义的变量只能在函数内使用外部无法访问。deftest_local():# 局部变量只在函数内有效local_var我是局部变量print(local_var)# 输出我是局部变量test_local()# 外部访问局部变量报错# print(local_var) # 报错NameError: name local_var is not defined2. 全局作用域函数外部函数外部定义的变量整个程序都能访问但函数内不能直接修改需要用global声明。# 全局变量整个程序有效global_var我是全局变量deftest_global():# 访问全局变量可以print(global_var)# 输出我是全局变量# 直接修改全局变量不行会创建局部变量# global_var 修改全局变量 # 这行执行后会创建一个局部的global_var而非修改全局的# 正确修改全局变量用global声明globalglobal_var global_var修改后的全局变量test_global()print(global_var)# 输出修改后的全局变量3. 易错点总结场景是否可行注意事项函数内访问全局变量可以无需声明函数内修改全局变量直接改不行需用global声明函数外访问局部变量不行局部变量仅函数内有效四、函数的调用那些容易忽略的细节1. 函数可以嵌套调用一个函数可以调用另一个函数这是代码复用的重要方式。# 定义计算平方defsquare(num):returnnum*num# 定义计算两个数的平方和defsum_of_squares(a,b):# 调用square函数square_asquare(a)square_bsquare(b)returnsquare_asquare_b# 调用sum_of_squaresresultsum_of_squares(3,4)print(result)# 输出253²4²916252. 函数必须先定义后调用Python是解释型语言执行到函数调用时必须已经定义过该函数。deftest():print(函数定义完成)test()# 输出函数定义完成五、新手必避的5个坑参数数量不匹配调用时传的参数个数和定义的不一致是最常见的错误默认参数用了可变对象比如列表、字典导致多次调用结果异常忘记缩进函数体定义函数时函数体没有缩进会报错修改全局变量未用global函数内直接修改全局变量实际创建了局部变量达不到修改目的return后写代码return后的代码永远不会执行属于无效代码。六、实战练习用函数解决实际问题学完基础用一个小例子巩固写一个函数判断一个数是否是质数只能被1和自身整除的大于1的整数。defis_prime(num):# 判断一个数是否是质数# 处理特殊情况小于等于1的数不是质数ifnum1:returnFalse# 处理2唯一的偶质数ifnum2:returnTrue# 处理偶数大于2的偶数不是质数ifnum%20:returnFalse# 检查从3到num的平方根之间的奇数foriinrange(3,int(num**0.5)1,2):ifnum%i0:returnFalse# 所有情况都不满足是质数returnTrue# 测试函数print(is_prime(7))# 输出Trueprint(is_prime(10))# 输出Falseprint(is_prime(1))# 输出Falseprint(is_prime(2))# 输出True七、总结Python函数的核心就是“封装”和“复用”定义函数用def调用函数用函数名()参数让函数能接收不同输入返回值让函数能输出结果掌握位置参数、关键字参数、默认参数、可变参数能应对绝大多数场景注意作用域问题避免变量访问/修改出错。作为新手不用急于掌握进阶的lambda、装饰器等内容先把本文的基础知识点练熟多写几个函数比如计算面积、判断奇偶、统计列表元素多踩几次坑就能彻底理解函数的用法。函数是Python编程的基础也是迈向更复杂项目的第一步打好这个基础后续学习类、模块都会更轻松。