The function does not run when I call it, Python [closed] - python

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 2 years ago.
Improve this question
I want to call a function (my_function), where clearly in my code I am calling it but if the function is not executing.
Someone knows what this is??
Here is my code:
import pandas as pd
my_variable = "1"
if my_variable == "1":
my_function()
global my_function
def my_function():
def tryloc(df, col, idx, default=None):
try:
return df.iloc[col, idx]
except IndexError:
return default
print("hello")
edit = pd.read_csv("priv/productos.csv")
product = tryloc(edit, 1, 0)
print(product)
and the second problem is that it says that this function does not exist when I am declaring it globally
Thanks if you answer!

Despite popular belief, "it's not working" isn't adequate information to diagnose a problem. That said, you are calling the function before it is even declare. You must declare a function before it can be called, always.Try moving
myFunction();
after where you defined it. But, there is a lot more going on here that's wrong and the question doesn't explain what the desired outcome is so I'm not sure how to help. I recommend going back and checking out some python scope documents.

Related

How can I know the outcome of the "return True" function? [closed]

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 2 years ago.
Improve this question
In the following code, if I run it on IDLE, it gives me no outcome.
But with the command return True, wasn't supposed to give me True on the outcome?
Or do I have to add something like print True?
data = [2,4,5,7,8,9,12,14,17,19,22,25,27,28,33,37]
target = 28
#Linear Search
def linear_search(data, target):
for i in range(len(data)):
if data[i] == target:
return True
return False
Only defining the function is not enough you also need to call it.
In your case so add following:
print(linear_search(data,target))

Python mock() not mocking the return value [closed]

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 3 months ago.
Improve this question
I'm having some trouble with Python mock() and I'm not familiar enough to figure out what's going on with it.
I have an abstract async task class that looks something like:
class AsyncTask(object):
#classmethod
def enqueue(cls):
....
task_ent = cls.createAsyncTask(body, delayed=will_delay)
....
I'd like to patch the createAsyncTask method for a specific instance of this class.
The code I wrote looks like:
#patch.object(CustomAsyncTaskClass, "createAsyncTask")
def test_my_test(self, mock_create_task):
....
mock_create_task.return_value = "12"
fn() # calls CustomAsyncTaskClass.enqueue(...)
....
When I print out task_ent in enqueue, I get <MagicMock name='createAsyncTask()' id='140578431952144'>
When I print out cls.createAsyncTask in enqueue, I get <MagicMock name='createAsyncTask' id='140578609336400'>
What am I doing wrong? Why won't createAsyncTask return 12?
Try the following:
#patch("package_name.module_name.createAsyncTask")
def test_my_test(self, mock_create_task):
....
mock_create_task.return_value = "12"
fn() # calls CustomAsyncTaskClass.enqueue(...)
....
where module_name is the name of the module which contains the class AsyncTask.
In general, this is the guideline https://docs.python.org/3/library/unittest.mock.html#where-to-patch
I know that this question is old but I just had the same problem and fixed it now.
If you patch multiple functions it is very important to keep the order in mind. It has to be reversed from the patches.
#patch("package_name.function1")
#patch("package_name.function2")
def test_method(
mocked_function2: MagicMock,
mocked_function1: MagicMock
)

"randint" function working unexpectedly inside functions? [closed]

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 8 years ago.
Improve this question
I need to use the random.randint inside of a function, but it always returns weird results. However, when I try it outside of the function, it works perfectly.
Here's a quick function to choose a number between one and six to illustrate my point:
import random
def dice():
return random.randint(1, 7)
print(dice)
And then I get an output like:
<function dice at 0x0000000004314D90>
I would really appreciate it if you could explain what's happening and how to prevent it.
You need to call the dice function and then print the result (return value).
print(dice())
# ^^
In Python, functions are called by placing (...) after their names. If your function takes any arguments, they would go where the ... is and be separated by commas:
func(arg1, arg2)
Your current code was printing <function dice at 0x0000000004314D90> because that is the representation of the function object that you were printing.
you are simply forgetting a set of parenthesis. it should be
print(dice())
now you are printing the function object.

Python: call a function inside another function [closed]

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 9 years ago.
Improve this question
regardless of what the functions have to return, my code seems to not call the first function properly, as when I try to pass some doctest it raises the error:
File "preg3.py", line 27, in mesDivisions
if nombreDivisions(llista[0],m)>=nombreDivisions(llista[1],m):
NameError: global name 'nombreDivisions' is not defined
here is my code:
def nombreDivisons(n,m):
x=0
def aux(n,m):
if n<m:
return x
else:
if n%m==0:
x=x+1
return aux(n/m,m)
else:
return x
def mesDivisions(llista,m):
if len(llista)==1:
return llista[0],nombreDivisions(llista[0],m)
else:
if nombreDivisions(llista[0],m)>=nombreDivisions(llista[1],m):
del llista[1]
return mesDivisions(llista,m)
else:
del llista[0]
return mesDivisions(llista,m)
any ideas why?
Check your white space. You want at least one and according to pep8 two blank lines between functions.
You failure is a typo though. It should be nombreDivisions but you left out the i so it is nombreDivisons.

Making a Python 2.7 module: Referencing values? [closed]

Closed. This question is not reproducible or was caused by typos. It is not currently accepting answers.
This question was caused by a typo or a problem that can no longer be reproduced. While similar questions may be on-topic here, this one was resolved in a way less likely to help future readers.
Closed 8 years ago.
Improve this question
I'm making a fairly simple weather module for myself and I have run into a major issue, I can't get a value from my module.
First, let me show you what I have so I can point out my issue.
PyWeather.py:
import urllib2
import json
import time
class get:
def __init__(self, location):
self.location = location
def status(self):
input = self.location
fixedinput = input.replace(" ","%20")
response = urllib2.urlopen('http://api.openweathermap.org/data/2.5/weather?q=' + fixedinput)
data = json.load(response)
weather = data['weather'][0]['main']
return weather
Main.py:
import PyWeather
location = 'Lexington, SC'
current = PyWeather.get(location).status
print current
I'm a little more than a beginner in Python, but I taught myself, so I don't understand quite a bit.
My issue lies in the output:
<bound method get.status of <PyWeather.get instance at 0x01925940>>
How do I get an output such as 'Clouds' (Which is the current condition)
You are not calling the function. You are just creating an alias to the function using the current variable name. Try
current = PyWeather.get(location).status() # Notice the ()
current = PyWeather.get(location).status()
should fix the issue

Categories