函数基础

0.1 函数的基本使用

1.1 基本概念

  • 所谓函数,就是把具有独立功能的代码块 组织为一个整体,在需要的时候调用
  • 函数的使用包括含两个步骤:
    1.定义函数——在函数中编写代码,实现功能
    2.调用函数——执行编写的代码
  • 函数的作用,在开发程序时,使用函数可以提高编写的效率以及代码的重用

1.2函数的定义

定义函数的格式如下:

def 函数名():
	函数封装的代码
	.....

1.def 是英文 define 的缩写
2.函数名称应该能够简单明确的表达函数功能,以方便后续的调用
3.函数名称的命名应该符合标识符的命名规则

  • 可以由 字母 下划线数字组成
  • 不能以数字 开头
  • 不能与关键字重名

1.3函数调用

调用函数很简单的,通过 函数名()即可完成对 函数的调用

1.4第一个函数演练

需求

  • 1.编写一个打招呼say_hello的函数,封装三行打招呼的代码

  • 1 在函数下方调用打招呼的代码

name = “小明”

#解释器知道这是定义了一个函数
def say_hello():
	print("hello 1")
	print("hello 2")
	print("hello 3")
print(name)
# 只有在调用函数时,之前定义的函数才会被执行
#函数执行完成后,会重新回到之前的程序中,继续执行后续的代码
say_hello()

02.函数执行过程,文档注释

2.1PyCharm的单步调试

  • F8 Step Over 可以单步执行代码,会把函数调用看作是一行代码直接执行

  • F7 Step Into 可以单步执行代码,如果是函数,会进入到函数内部
    用单步执行F8和F7观察以下代码的执行过程

  • 定义好函数之后,只表示这个函数封装了一段代码而已

  • 如果不主动调用函数,函数是不会主动执行的

思考

  • 能否将函数调用放在函数定义的上方

    不能
    因为在使用函数名调用函数之前,必须要保证Python已经知道函数的存在
    否则控制台会提示 NameError: name ‘say_hello’ is not defined(名称错误:say_hello这个名字没有被定义

2.2 函数的文档注释

  • 在开发中,如果希望给函数添加注释,应该在定义函数的下方,使用连续的三对引号
  • 连续三对引号之间编写对函数的说明文字
  • 函数调用位置,使用快捷键CTRL+Q 可以查看函数的说明信息

函数执行过程,文档注释

def func_sum():
   	"""求和 1+2"""
   sum_num  = 1 + 2
   print(sum_num)


func_sum()

注意:因为函数体相对比较独立,函数定义的上方,应该和其他代码(包括注释)保留两个空行

03.函数的参数(一)

演练需求
1.开发一个sum_2_num 函数
2.函数能够实现 两个数字的求和 功能
演练代码如下:

def sum_2_num():
	
	num1 = 10
	num2 = 20
	result = num1 + num2
	print("%d + %d = % d "%(num1, num2, result))

sum_2_num()

思考一下存在什么问题

函数只能处理 固定值 的相加

如何解决?

  • 如果能够把需要计算的数字,在调用函数时,传递到函数内部就好了!

3.1 参数的概念

  • 函数的参数可以传递数据给函数内部,添加函数的通用性
    1.在函数内部,把参数当做变量使用,进行需要的数据处理
    2.函数调用时,按照函数定义的参数顺序,把希望在函数内部处理的数据,通过参数传递

3.2设置函数的参数

  • 在函数名的后面的小括号内部填写参数
  • 多个参数之间使用,分隔
def sum_2_num(num1, num2):

	result = num1 + num2
	
	print ("%d + %d  = %d" % (num1, num2, result))

sum_2_num(20, 80)

3.3形参和实参

  • 形参:定义函数时设置的参数,是用来代替真实数据的,在函数内部作为变量使用
  • 实参:调用函数时设置的 真实数据,会被传递到函数内部
形参的作用域

以下程序两次打印a的结果是?

a = 5
def test1(a):
	a += 1
	print("%d" % a)

test1(2)
print("%d" % a)
  • 形参的作用域(起作用的范围)只在定义函数的代码块中,一旦超出该范围再使用该参名,则使用的是同名自定义变量
  • 编程中应该尽量避免函数的形参和同文件的变量名 同名

0.4函数的返回值(一)

4.1 概念

  • 开发中,有时会希望一个函数执行结束后告诉调用者一个结果,以便调用者针对具体的结果做后续的处理
  • 返回值函数给调用方提供放入结果

4.2 设置返回值

  • 在函数中使用 return 关键字可以返回结果
  • 调用函数一方,可以使用变量接收函数的返回结果
def sum_2_num(num1, num2):
	"""对两个数字的求和"""
	return num1 + num2
#调用函数,并使用result 变量接收计算结果
result= sum_2_num(10, 30)

print("计算结果是 %d" % result)

⚠️注意:return表示返回,后续的代码都不会被执行

0.5 4种函数的类型

函数根据有没有参数,有没有返回值,可以相互组合,一共四种

  • 无参数,无返回值
  • 无参数,有返回值
  • 有参数,无返回值
  • 有参数,有返回值

5.1无参数,无返回值的函数

def print_menu():
	"""打印菜单"""
	print('--------------------------')
	print('          xx涮涮锅 点菜系统')
	print(' ')
	print('    1.     羊肉涮涮锅')
	print('    1.     牛肉涮涮锅')
	print('    1.     猪肉涮涮锅')
	print('--------------------------')

5.2 无参数,有返回值的函数

def get_pi():
		"""
		获取圆周率
		:return:圆周率,小数点后保留9位
		"""
		return 3.141592654
pi = get_pi()
print('圆周率为:%.9f' % pi)

5.3 有参数,无返回值的函数

def print_star(num):
	"""
	打印星星
	:param num:星星数量
	"""
	print("*" num)
	
print_star(5)

5.4 有参数,有返回值的函数

def func_num(num):
	"""
	0-n累加求和
	:param num:累加的最后一个数
	:return:累加的和
    """
    result = 0
    i = 1
    while i <= num:
    	result = result + i
    	i += 1
    return result
result = func_sum(100)
print('1~100的累加和为:%d ' % result)

<5>小总结

  • 函数根据有没有参数,有没有返回值可以相互组合
  • 定义函数时,是根据实际的功能需求来设计的,所以不同开发人员编写的函数类型各不相同

0.6 函数的嵌套调用

  • 一个函数里面又调用来另外一个函数,这就是函数嵌套调用
  • 如果函数func2中,调用来另一个函数fun1
    1.那么执行到调用func1函数时,会把函数func1中的任务都执行完
    2. 才会回到func2中调用函数func1的位置,继续执行后续的代码
def func1():

	print("func1开始")
	print("func1结束")

def func2():

	print("func1开始")
	
	func1()
	
	print("func1结束")

func2()

函数嵌套的演练-------打印分割线

需求1

  • 定义一个print_line 函数能够打印 * 组成的一条分割线
def print_line():
	
	print(" * " * 50)

需求2

  • 定义一个函数能够打印由任意字符组成的分割线
def print_line(char):

	print(char * 50)

需求3

  • 定义一个函数能够打印任意长度的分割线
def print_line(char, length):

	print(char * length)

需求4

  • 定义一个函数能够打印5行的分割线,分割线要去符合需求3
def print_line(char, length):
	
	print(char * length)

def print_lines(char * length):

	row = 0
	
	while row < 5:
		print_line(char * length)
		
		row += 1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值