跟着我们一起学 Python 30天课程-第6天-循环II和函数(Loops II & Functions)

作者 : IT 大叔 本文共5068个字,预计阅读时间需要13分钟 发布时间: 2020-08-20

循环继续

While循环

while循环是根据特定条件多次运行代码块的另一种方法。在处理while循环时,我们需要小心一些,以免意外地创建一个无限循环,该循环将一直执行直到它们使我们的系统崩溃!

hungry = True
while(hungry): # This is always true so it keeps printing until system crashes!
  print('Give me something to eat!!')

但是,虽然循环很酷。它们易于编写且易于阅读。我们只需要告诉解释器何时停止循环即可。它可以通过使用来要么完成了break其停止循环执行,声明中断跳出循环。另一种方法是使条件错误以停止执行。

hungry = True
while(hungry):
    print('Give me something to eat!!')
    break # prints only once and stops the loop execution
hungry = True
satisfaction = 0
while(satisfaction < 10):
  satisfaction += 1
  print('Give me something to eat!!') # prints 10 times

while循环的另一个特征是它可以与一个else块组合。

hungry = True
satisfaction = 0
while satisfaction < 10:
  satisfaction += 1
  print('Give me something to eat!!')
else:
    print('I am super satisfied now') # gets printed once condition is falsy

需要注意的是,如果break在while块中使用该语句,则else不会执行该块。

While vs循环

当知道需要循环的可迭代范围时,for循环通常很有用。而当我们想多次执行某些任务而事先不知道范围时,while循环会派上用场。

while True:
  response_from_user = input('Enter some message. Enter bye to exit')
  if(response_from_user == 'bye'):
    break

除了该break语句外,还有另外两个语句,continue它们不是脱离循环而是继续进行迭代。pass经常不使用,但有时用作占位符以在循环后继续执行语句。

快速编码练习

让我们在电子邮件列表中查找重复的电子邮件并进行打印。

email_list = ['roger@hey.com','michael@hey.com','roger@hey.com','prince@gmail.com']
duplicate_emails = []
for email in email_list:
  if email_list.count(email) > 1 and email not in duplicate_emails:
    duplicate_emails.append(email)
print(duplicate_emails)

那是我解决问题的方法。让我知道您将如何在评论中解决它。好的!是时候切换到一个有趣的话题,功能

功能

函数是一个非常重要的概念,它们存在于所有编程语言中。函数允许我们定义一个动作(代码块),然后执行该动作任意次,而无需遵循DRY的原理。到现在为止,我一直在使用一些被Python提供诸如内置功能printinputlen等它的时间来创建一个。

def blow_fire(): # This part is called function definition
  print('fire 🔥 🔥 🔥')

blow_fire() # This part is called function invocation
blow_fire() # It can be called any number to times to perform some action

参数和参数

上面的功能很酷,但是也有一些限制。它只能执行相同的操作。让我们使其更具扩展性,并通过向其传递一些数据来使其随意执行操作

def blower(name, emoji): # parameters
  print(f'{name} {emoji} {emoji} {emoji}')

blower('fire', '🔥') # arguments
blower('water', '🌊')

在定义一个函数时,当我们向其提供一些数据以基于该数据执行某些操作时,所提供的数据称为参数。可以为函数提供任意数量的参数。

当调用或调用相同的函数来执行操作时,它会将数据作为参数接受。它只是术语,但经常造成混淆​​,并且可以互换使用。

由于参数或自变量的顺序或位置很重要,以上内容也称为位置参数位置自变量

def blower(name = 'fire', emoji = '🔥'): # default parameters
  print(f'{name} {emoji} {emoji} {emoji}')

blower('fire', '🔥') # arguments
blower('water', '🌊')
blower() # fire 🔥 # this works as the function has default parameters defined

返回

return是Python中的关键字,用于从函数返回值。为了使函数更有用,它需要基于对表达式的求值返回一些值。如果未指定return语句,或者return语句的表达式未求值为数据类型,则该函数返回None。在JavaScript世界中,None可以将其链接到void

return语句终止该函数并退出该函数。

def multiplier(num1, num2):
  return num1 * num2

result = multiplier(2,3)
print(result) # 6

该使用该return语句来做一些很棒的事情了。

def sum(num1):
  def child(num2):
    return num1 + num2
  return child

add_10 = sum(10)
print(add_10(20)) # 30  (Closure!!!)
print(add_10(50)) # 60
print(add_10(100)) # 110

好极了!我刚刚验证了Python中也有闭包的概念,就像JavaScript中一样。创建工厂功能非常有效。在上面的代码块中,我能够创建一个通用函数add_10并将动态参数传递给它,以生成不同的结果。多么酷啊!

在下周学习Python中的函数式编程概念时,将对此进行更多探索。

方法只是在对象内部定义的简单函数,或者换句话说,它们由对象“拥有”。使用对象名.调用它们,然后由操作员执行或调用它们。

字串

在编写自定义函数时,如果提及函数的目标,以便其他同事或代码用户可以轻松理解函数在使用它们时的功能,那将非常有帮助。IDE将显示该功能的信息。此外,还有一些帮助程序功能和方法来查看有关功能的信息(如果存在)。

“代码告诉您如何;评论告诉您原因。”
-杰夫·阿特伍德(又名编码恐怖片)

def test_function():
  '''
  This function just prints test to the console.
  '''
  print('test')

test_function()

“代码经常被阅读而不是书面。”
—吉多·范·罗苏姆(Guido van Rossum)

https://www.programiz.com/python-programming/docstrings

* args和** kwargs

* args是参数的缩写形式,** kwargs代表关键字参数。这些在函数需要接受任意数量的参数或关键字参数时使用。

def powerful_function(*args):
  print(args)

powerful_function(1,3,2) # (1, 3, 2) --> Returns a tuple

def super_function(**kwargs):
  print(kwargs)

super_function(name='John', age='45') # {'name': 'John', 'age': '45'} --> Returns a dict

https://www.programiz.com/python-programming/args-and-kwargs

在JavaScript世界中,ES6 rest参数用于提取传递给函数的所有参数。创造了另一个心理模型!

范围

简单来说,作用域表示“我可以访问哪些变量?” 。解释器在读取代码以查找变量范围时会提出这种问题。在Python中,变量具有函数 作用域 ,这意味着无法在函数外部访问在函数内部定义的变量。

num = 1
def confusing_function():
    num = 10
    return num

print(num) # 1 => Global Scope
print(confusing_function()) # 10 => Local Scope

这些是Python解释器遵循的范围规则:

  • 从本地开始。变量存在吗?然后获取值。如果没有,则继续
  • 变量是否在父函数的本地作用域中定义?提取值(如果存在),否则继续
  • 变量是否存在于全局范围内?提取值(如果存在),否则继续
  • 变量是内置函数吗?获取值,否则退出

阅读有关Python范围的更多信息

这也是有关范围的出色文章

今天就这样。我现在已经能够涵盖大多数Python基础知识。现在是时候深入研究高级主题了,但是在此之前,我想探索并设置开发人员环境以及明天可用的所有各种工具和程序,以完成第一周的路线图。

跟着我们一起学 Python 30天课程目录:

  1.  跟着我们一起学 Python 30天课程-第30天-免费Python资源 
  2.  跟着我们一起学 Python 30天课程-第29天-自动化测试 
  3.  跟着我们一起学 Python 30天课程-第28天-ML和数据科学II 
  4.  跟着我们一起学 Python 30天课程-第27天-ML和数据科学I 
  5.  跟着我们一起学 Python 30天课程-第26天-机器学习基础 
  6.  跟着我们一起学 Python 30天课程-第25天-Web 开发进阶
  7.  跟着我们一起学 Python 30天课程-第24天-Web开发基础 
  8.  跟着我们一起学 Python 30天课程-第23天-网页爬虫 
  9.  跟着我们一起学 Python 30天课程-第22天-脚本额外功能Scripting Extras 
  10.  跟着我们一起学 Python 30天课程-第21天-脚本编写基础 
  11.  跟着我们一起学 Python 30天课程-第20天-调试和测试 
  12.  跟着我们一起学 Python 30天课程-第19天-正则表达式 
  13.  跟着我们一起学 Python 30天课程-第18天-文件I / O 
  14.  跟着我们一起学 Python 30天课程-第17天-外部模块External Modules 
  15.  跟着我们一起学 Python 30天课程-第16天-模块基础Module Basics 
  16.  跟着我们一起学 Python 30天课程-第15天-生成器Generators 
  17.  跟着我们一起学 Python 30天课程-第14天-错误处理Error Handling 
  18.  跟着我们一起学 Python 30天课程-第13天-Decorators 
  19.  跟着我们一起学 Python 30天课程-第12天-Lambda Expressions & Comprehensions 
  20.  跟着我们一起学 Python 30天课程-第11天-函数编程Functional Programming基础 
  21.  跟着我们一起学 Python 30天课程-第10天-OOP Missing Pieces 
  22.  跟着我们一起学 Python 30天课程-第9天-OOP Pillars 
  23.  跟着我们一起学 Python 30天课程-第8天-OOP基础知识 
  24.  跟着我们一起学 Python 30天课程-第7天-开发环境搭建(Developer Environment) 
  25.  跟着我们一起学 Python 30天课程-第6天-循环II和函数(Loops II & Functions) 
  26.  跟着我们一起学 Python 30天课程-第5天-条件和循环I(Conditions & Loops I) 
  27.  跟着我们一起学 Python 30天课程-第4天-数据类型III(Data Types III) 
  28.  跟着我们一起学 Python 30天课程-第3天-数据类型II(Data Types II) 
  29.  跟着我们一起学 Python 30天课程-第2天-数据类型I(Data Types I) 
  30.  跟着我们一起学 Python 30天课程-第1天-简介 
免责声明:
1. 本站资源转自互联网,源码资源分享仅供交流学习,下载后切勿用于商业用途,否则开发者追究责任与本站无关!
2. 本站使用「署名 4.0 国际」创作协议,可自由转载、引用,但需署名原版权作者且注明文章出处
3. 未登录无法下载,登录使用金币下载所有资源。
IT小站 » 跟着我们一起学 Python 30天课程-第6天-循环II和函数(Loops II & Functions)

常见问题FAQ

没有金币/金币不足 怎么办?
本站已开通每日签到送金币,每日签到赠送五枚金币,金币可累积。
所有资源普通会员都能下载吗?
本站所有资源普通会员都可以下载,需要消耗金币下载的白金会员资源,通过每日签到,即可获取免费金币,金币可累积使用。

发表评论